diff options
author | Stelios Fragkakis <52996999+stelfrag@users.noreply.github.com> | 2023-08-17 15:21:40 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-17 15:21:40 +0300 |
commit | bcc29cbe375a318a7b8bdbccb516084acf3d097b (patch) | |
tree | 104ac217cc3c9c968fcd4a4acdc6bc9809d64353 /web | |
parent | cec38dd7de6a068b2bfc06712e766e111982d604 (diff) |
Release fd if setsockopt or bind fails (#15826)
Diffstat (limited to 'web')
-rw-r--r-- | web/server/h2o/http_server.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/web/server/h2o/http_server.c b/web/server/h2o/http_server.c index b94a7daeb9..650a361840 100644 --- a/web/server/h2o/http_server.c +++ b/web/server/h2o/http_server.c @@ -46,6 +46,8 @@ static int create_listener(const char *ip, int port) if ((fd = socket(AF_INET, SOCK_STREAM, 0)) == -1 || setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &reuseaddr_flag, sizeof(reuseaddr_flag)) != 0 || bind(fd, (struct sockaddr *)&addr, sizeof(addr)) != 0 || listen(fd, SOMAXCONN) != 0) { + if (fd != -1) + close(fd); return -1; } |