commit 9f067a059d9f64c68a73a2f7fbf5308ee342fe2a from: Alexander Barton date: Wed Nov 12 00:26:04 2008 UTC Connection counter: count outgoing connections as well. This patch lets ngIRCd count outgoing connections as well as incoming connections (up to now only outgoing connections have been counted). This change is required because the Conn_Close() function doesn't know whether it closes an outgoing connection or not and therefore would decrement the counter below zero when an outgoing connection existed -- which would trigger an assert() call ... Please note that this patch changes the (so far undocumented but now fixed) behaviour of the "MaxConnections" configuration option to account the sum of the in- and outbound connections! commit - 5a91d621009d6a0f3b8e5ff054aa6ae7e3195191 commit + 9f067a059d9f64c68a73a2f7fbf5308ee342fe2a blob - 665edae72dbbb76cbfece09cd004e7749bc426ef blob + 459d51d4e1765054735c97430939f4178e8df61f --- doc/sample-ngircd.conf +++ doc/sample-ngircd.conf @@ -126,8 +126,8 @@ ;ConnectIPv6 = yes ;ConnectIPv4 = yes - # Maximum number of simultaneous connection the server is allowed - # to accept (0: unlimited): + # Maximum number of simultaneous in- and outbound connections the + # server is allowed to accept (0: unlimited): ;MaxConnections = 0 # Maximum number of simultaneous connections from a single IP address blob - cdf4a4256df61406bede865a7fd749194b8e284e blob + 14baf2090b6f3ee6f05ebba8ef386306efaa9f8c --- man/ngircd.conf.5.tmpl +++ man/ngircd.conf.5.tmpl @@ -193,8 +193,8 @@ Set this to no if you do not want ngircd to connect to Default: Yes. .TP \fBMaxConnections\fR -Maximum number of simultaneous connection the server is allowed to accept -(0: unlimited). Default: 0. +Maximum number of simultaneous in- and outbound connections the server is +allowed to accept (0: unlimited). Default: 0. .TP \fBMaxConnectionsIP\fR Maximum number of simultaneous connections from a single IP address that blob - 0b21d3a12b66e27fdfd392f20b235e19ba6a9d7d blob + f0a97f9cdddec0437f883d7f0716c24f4d6b9286 --- src/ngircd/conn.c +++ src/ngircd/conn.c @@ -116,6 +116,7 @@ cb_listen(int sock, short irrelevant) (void) irrelevant; if (New_Connection( sock ) >= 0) NumConnections++; + LogDebug("Total number of connections now %ld.", NumConnections); } @@ -130,6 +131,7 @@ cb_listen_ssl(int sock, short irrelevant) return; NumConnections++; + LogDebug("Total number of connections now %ld.", NumConnections); io_event_setcb(My_Connections[fd].sock, cb_clientserver_ssl); } #endif @@ -1035,7 +1037,8 @@ Conn_Close( CONN_ID Idx, char *LogMsg, char *FwdMsg, b assert(NumConnections > 0); if (NumConnections) NumConnections--; - LogDebug("Shutdown of connection %d completed", Idx ); + LogDebug("Shutdown of connection %d completed, %ld connection%s left.", + Idx, NumConnections, NumConnections != 1 ? "s" : ""); } /* Conn_Close */ @@ -1717,8 +1720,9 @@ New_Server( int Server , ng_ipaddr_t *dest) Conf_Server[Server].conn_id = NONE; } #endif - LogDebug("Registered new connection %d on socket %d.", - new_sock, My_Connections[new_sock].sock ); + NumConnections++; + LogDebug("Registered new connection %d on socket %d (%ld in total).", + new_sock, My_Connections[new_sock].sock, NumConnections); Conn_OPTION_ADD( &My_Connections[new_sock], CONN_ISCONNECTING ); } /* New_Server */