From 5330e3d7fdb323ee4176b36639b59f6f90c22617 Mon Sep 17 00:00:00 2001 From: Wilmer van der Gaast Date: Sun, 14 May 2006 11:05:41 +0200 Subject: Oops, closesocket() didn't handle sockets with both a read- and a write-handler very well yet. --- protocols/events_libevent.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'protocols') diff --git a/protocols/events_libevent.c b/protocols/events_libevent.c index 429ca821..67f973b9 100644 --- a/protocols/events_libevent.c +++ b/protocols/events_libevent.c @@ -228,9 +228,14 @@ void closesocket( int fd ) get a little bit messed up. So this little function will remove the handlers properly before closing a socket. */ - if( ( b_ev = g_hash_table_lookup( read_hash, &fd ) ) || ( b_ev = g_hash_table_lookup( write_hash, &fd ) ) ) + if( b_ev = g_hash_table_lookup( read_hash, &fd ) ) { - event_debug( "Warning: Had to clean up some event handlers before closing fd %d.\n", fd ); + event_debug( "Warning: fd %d still had a read event handler when shutting down.\n", fd ); + b_event_remove( b_ev->id ); + } + if( b_ev = g_hash_table_lookup( write_hash, &fd ) ) + { + event_debug( "Warning: fd %d still had a write event handler when shutting down.\n", fd ); b_event_remove( b_ev->id ); } -- cgit v1.2.3