[client] call freeaddrinfo() early after iterating through getaddrinfo() results

This commit is contained in:
Michael Rash
2014-07-22 22:35:43 -04:00
parent 5fadf56af4
commit e1608b90fe
2 changed files with 23 additions and 16 deletions
+12 -8
View File
@@ -57,7 +57,7 @@ try_url(struct url *url, fko_cli_options_t *options)
int sock=-1, sock_success=0, res, error, http_buf_len, i;
int bytes_read = 0, position = 0;
int o1, o2, o3, o4;
struct addrinfo *result, *rp, hints;
struct addrinfo *result=NULL, *rp, hints;
char http_buf[HTTP_MAX_REQUEST_LEN] = {0};
char http_response[HTTP_MAX_RESPONSE_LEN] = {0};
char *ndx;
@@ -112,21 +112,25 @@ try_url(struct url *url, fko_cli_options_t *options)
sock_success = 1;
break; /* made it */
}
else /* close the open socket if there was a connect error */
{
#ifdef WIN32
closesocket(sock);
#else
close(sock);
#endif
}
}
if(result != NULL)
freeaddrinfo(result);
if (! sock_success)
{
log_msg(LOG_VERBOSITY_ERROR, "resolve_ip_http: Could not create socket: ", strerror(errno));
#ifdef WIN32
closesocket(sock);
#else
close(sock);
#endif
return(-1);
}
freeaddrinfo(result);
log_msg(LOG_VERBOSITY_DEBUG, "\nHTTP request: %s", http_buf);
res = send(sock, http_buf, http_buf_len, 0);
+11 -8
View File
@@ -87,7 +87,7 @@ send_spa_packet_tcp_or_udp(const char *spa_data, const int sd_len,
const fko_cli_options_t *options)
{
int sock=-1, sock_success=0, res=0, error;
struct addrinfo *result, *rp, hints;
struct addrinfo *result=NULL, *rp, hints;
char port_str[MAX_PORT_STR_LEN+1] = {0};
if (options->test)
@@ -138,22 +138,25 @@ send_spa_packet_tcp_or_udp(const char *spa_data, const int sd_len,
sock_success = 1;
break; /* made it */
}
else /* close the open socket if there was a connect error */
{
#ifdef WIN32
closesocket(sock);
#else
close(sock);
#endif
}
}
if(result != NULL)
freeaddrinfo(result);
if (! sock_success) {
log_msg(LOG_VERBOSITY_ERROR,
"send_spa_packet_tcp_or_udp: Could not create socket: ",
strerror(errno));
#ifdef WIN32
closesocket(sock);
#else
close(sock);
#endif
return -1;
}
freeaddrinfo(result);
res = send(sock, spa_data, sd_len, 0);
if(res < 0)