repo: ngircd
action: commit
revision: 
path_from: 
revision_from: 9f067a059d9f64c68a73a2f7fbf5308ee342fe2a:
path_to: 
revision_to: 
git.thebackupbox.net
ngircd
git clone git://git.thebackupbox.net/ngircd
commit 9f067a059d9f64c68a73a2f7fbf5308ee342fe2a
Author: Alexander Barton 
Date:   Wed Nov 12 01:23:33 2008 +0100

    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!

diff --git a/doc/sample-ngircd.conf b/doc/sample-ngircd.conf
index 665edae72dbbb76cbfece09cd004e7749bc426ef..
index ..459d51d4e1765054735c97430939f4178e8df61f 100644
--- a/doc/sample-ngircd.conf
+++ b/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
diff --git a/man/ngircd.conf.5.tmpl b/man/ngircd.conf.5.tmpl
index cdf4a4256df61406bede865a7fd749194b8e284e..
index ..14baf2090b6f3ee6f05ebba8ef386306efaa9f8c 100644
--- a/man/ngircd.conf.5.tmpl
+++ b/man/ngircd.conf.5.tmpl
@@ -193,8 +193,8 @@ Set this to no if you do not want ngircd to connect to other irc servers using i
 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
diff --git a/src/ngircd/conn.c b/src/ngircd/conn.c
index 0b21d3a12b66e27fdfd392f20b235e19ba6a9d7d..
index ..f0a97f9cdddec0437f883d7f0716c24f4d6b9286 100644
--- a/src/ngircd/conn.c
+++ b/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, bool InformClient )
 	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 */

-----END OF PAGE-----