From 1b862ed9cea4e07be4a33ec795f7dd4788b252fe Mon Sep 17 00:00:00 2001 From: mamil Date: Wed, 16 Oct 2019 12:36:19 +0300 Subject: [PATCH] fix some resource leaks --- WebBench/socket.c | 5 ++++- WebServer/Util.cpp | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/WebBench/socket.c b/WebBench/socket.c index f12be7e..6de3d56 100755 --- a/WebBench/socket.c +++ b/WebBench/socket.c @@ -58,8 +58,11 @@ int Socket(const char *host, int clientPort) // if(setsockopt(sock, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof(optval)) == -1) // return -1; if (connect(sock, (struct sockaddr *)&ad, sizeof(ad)) < 0) + { + close(sock); return -1; - + } + return sock; } diff --git a/WebServer/Util.cpp b/WebServer/Util.cpp index f801f87..4bbd469 100755 --- a/WebServer/Util.cpp +++ b/WebServer/Util.cpp @@ -238,7 +238,10 @@ int socket_bind_listen(int port) // 消除bind时"Address already in use"错误 int optval = 1; if(setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) == -1) + { + close(listen_fd); return -1; + } // 设置服务器IP和Port,和监听描述副绑定 struct sockaddr_in server_addr; @@ -247,11 +250,17 @@ int socket_bind_listen(int port) server_addr.sin_addr.s_addr = htonl(INADDR_ANY); server_addr.sin_port = htons((unsigned short)port); if(bind(listen_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) + { + close(listen_fd); return -1; + } // 开始监听,最大等待队列长为LISTENQ if(listen(listen_fd, 2048) == -1) + { + close(listen_fd); return -1; + } // 无效监听描述符 if(listen_fd == -1)