Fix resource leaks
This commit is contained in:
parent
39498beffd
commit
8dc47c6750
|
@ -708,6 +708,8 @@ static void start_listen(struct event_base *evbase, const char *service,
|
||||||
LEV_OPT_REUSEABLE, 16,
|
LEV_OPT_REUSEABLE, 16,
|
||||||
rp->ai_addr, rp->ai_addrlen);
|
rp->ai_addr, rp->ai_addrlen);
|
||||||
if(listener) {
|
if(listener) {
|
||||||
|
freeaddrinfo(res);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1334,6 +1334,8 @@ int nghttp2_hd_deflate_new(nghttp2_hd_deflater **deflater_ptr,
|
||||||
rv = nghttp2_hd_deflate_init2(deflater, deflate_hd_table_bufsize_max);
|
rv = nghttp2_hd_deflate_init2(deflater, deflate_hd_table_bufsize_max);
|
||||||
|
|
||||||
if(rv != 0) {
|
if(rv != 0) {
|
||||||
|
free(deflater);
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2045,6 +2047,8 @@ int nghttp2_hd_inflate_new(nghttp2_hd_inflater **inflater_ptr)
|
||||||
rv = nghttp2_hd_inflate_init(inflater);
|
rv = nghttp2_hd_inflate_init(inflater);
|
||||||
|
|
||||||
if(rv != 0) {
|
if(rv != 0) {
|
||||||
|
free(inflater);
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
22
src/shrpx.cc
22
src/shrpx.cc
|
@ -110,16 +110,20 @@ int resolve_hostname(sockaddr_union *addr, size_t *addrlen,
|
||||||
char host[NI_MAXHOST];
|
char host[NI_MAXHOST];
|
||||||
rv = getnameinfo(res->ai_addr, res->ai_addrlen, host, sizeof(host),
|
rv = getnameinfo(res->ai_addr, res->ai_addrlen, host, sizeof(host),
|
||||||
0, 0, NI_NUMERICHOST);
|
0, 0, NI_NUMERICHOST);
|
||||||
if(rv == 0) {
|
if(rv != 0) {
|
||||||
|
LOG(FATAL) << "Address resolution for " << hostname << " failed: "
|
||||||
|
<< gai_strerror(rv);
|
||||||
|
|
||||||
|
freeaddrinfo(res);
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if(LOG_ENABLED(INFO)) {
|
if(LOG_ENABLED(INFO)) {
|
||||||
LOG(INFO) << "Address resolution for " << hostname << " succeeded: "
|
LOG(INFO) << "Address resolution for " << hostname << " succeeded: "
|
||||||
<< host;
|
<< host;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
LOG(FATAL) << "Address resolution for " << hostname << " failed: "
|
|
||||||
<< gai_strerror(rv);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
memcpy(addr, res->ai_addr, res->ai_addrlen);
|
memcpy(addr, res->ai_addr, res->ai_addrlen);
|
||||||
*addrlen = res->ai_addrlen;
|
*addrlen = res->ai_addrlen;
|
||||||
freeaddrinfo(res);
|
freeaddrinfo(res);
|
||||||
|
@ -194,6 +198,8 @@ evconnlistener* create_evlistener(ListenHandler *handler, int family)
|
||||||
LOG(WARNING) << "Listening " << (family == AF_INET ? "IPv4" : "IPv6")
|
LOG(WARNING) << "Listening " << (family == AF_INET ? "IPv4" : "IPv6")
|
||||||
<< " socket failed";
|
<< " socket failed";
|
||||||
|
|
||||||
|
freeaddrinfo(res);
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -201,6 +207,8 @@ evconnlistener* create_evlistener(ListenHandler *handler, int family)
|
||||||
rv = getnameinfo(rp->ai_addr, rp->ai_addrlen, host, sizeof(host),
|
rv = getnameinfo(rp->ai_addr, rp->ai_addrlen, host, sizeof(host),
|
||||||
nullptr, 0, NI_NUMERICHOST);
|
nullptr, 0, NI_NUMERICHOST);
|
||||||
|
|
||||||
|
freeaddrinfo(res);
|
||||||
|
|
||||||
if(rv != 0) {
|
if(rv != 0) {
|
||||||
LOG(WARNING) << gai_strerror(rv);
|
LOG(WARNING) << gai_strerror(rv);
|
||||||
|
|
||||||
|
@ -213,8 +221,6 @@ evconnlistener* create_evlistener(ListenHandler *handler, int family)
|
||||||
LOG(INFO) << "Listening on " << host << ", port " << get_config()->port;
|
LOG(INFO) << "Listening on " << host << ", port " << get_config()->port;
|
||||||
}
|
}
|
||||||
|
|
||||||
freeaddrinfo(res);
|
|
||||||
|
|
||||||
auto evlistener = evconnlistener_new
|
auto evlistener = evconnlistener_new
|
||||||
(handler->get_evbase(),
|
(handler->get_evbase(),
|
||||||
ssl_acceptcb,
|
ssl_acceptcb,
|
||||||
|
|
Loading…
Reference in New Issue