From 6691732900f119d98ea4810ad4fe64bcbbe22074 Mon Sep 17 00:00:00 2001 From: Kevin Easton Date: Wed, 7 Aug 2013 23:03:45 +0000 Subject: [PATCH] Make add_socketread() close the new socket if it can't be added to the socket manager because it exceeds FD_SETSIZE. git-svn-id: svn://svn.code.sf.net/p/bitchx/code/trunk@307 13b04d17-f746-0410-82c6-800466cd88b0 --- Changelog | 2 ++ source/misc.c | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/Changelog b/Changelog index 19b8576..2fb3413 100644 --- a/Changelog +++ b/Changelog @@ -1,5 +1,7 @@ [Changes 1.2c01] +* Ensure add_socketread() doesn't leak file descriptors. (caf) + * Fix listing bans on local channels (/BANS &channel). (flashback) * Fix unbanning by number (/UNBAN #channel #number). (caf) diff --git a/source/misc.c b/source/misc.c index fd4c47a..d16337e 100644 --- a/source/misc.c +++ b/source/misc.c @@ -3514,7 +3514,11 @@ int BX_add_socketread(int s, int port, unsigned long flags, char *server, void ( set_socket_read(&rd, &rd); } if (s >= FD_SETSIZE) + { + yell("File descriptor limit reached, dropping new socket."); + close(s); return -1; + } if (s > sock_manager.max_fd) sock_manager.max_fd = s; sock_manager.count++;