Browse Source

evrexec: free resources in case of failure

Daniel-Constantin Mierla 3 years ago
parent
commit
1e97d6e63c
1 changed files with 3 additions and 0 deletions
  1. 3 0
      src/modules/evrexec/evrexec_mod.c

+ 3 - 0
src/modules/evrexec/evrexec_mod.c

@@ -259,11 +259,14 @@ void evrexec_process_socket(evrexec_task_t *it, int idx)
 	if(it->sockfd==-1) {
 	if(it->sockfd==-1) {
 		LM_ERR("failed to create socket - address: %.*s (%d/%s)\n",
 		LM_ERR("failed to create socket - address: %.*s (%d/%s)\n",
 				it->sockaddr.len, it->sockaddr.s, errno, strerror(errno));
 				it->sockaddr.len, it->sockaddr.s, errno, strerror(errno));
+		freeaddrinfo(res);
 		return;
 		return;
 	}
 	}
 	if(bind(it->sockfd, res->ai_addr, res->ai_addrlen)==-1) {
 	if(bind(it->sockfd, res->ai_addr, res->ai_addrlen)==-1) {
 		LM_ERR("failed to bind socket - address: %.*s (%d/%s)\n",
 		LM_ERR("failed to bind socket - address: %.*s (%d/%s)\n",
 				it->sockaddr.len, it->sockaddr.s, errno, strerror(errno));
 				it->sockaddr.len, it->sockaddr.s, errno, strerror(errno));
+		close(it->sockfd);
+		freeaddrinfo(res);
 		return;
 		return;
 	}
 	}
 	freeaddrinfo(res);
 	freeaddrinfo(res);