commit - bc20f9ec1076a67a81ed8e7c3489ffbdf3387e53
commit + 871760583cb4f90e908d3dac94679ce876d78c83
blob - f743d1f81b2331a81a3cbcc6bbbf9ca99b645b58
blob + 71dc939f0e3ce0ce5a46107ed555cfa7334e398d
--- src/ngircd/conn.c
+++ src/ngircd/conn.c
#define SERVER_WAIT (NONE - 1)
#define MAX_COMMANDS 3
-#define MAX_COMMANDS_SERVER 10
-#define MAX_COMMANDS_SERVICE MAX_COMMANDS_SERVER
+#define MAX_COMMANDS_SERVER_MIN 10
+#define MAX_COMMANDS_SERVICE 10
static bool Handle_Write PARAMS(( CONN_ID Idx ));
assert(c != NULL);
- /* Servers do get special command limits, so they can process
- * all the messages that are required while peering. */
+ /* Servers get special command limits that depend on the user count */
switch (Client_Type(c)) {
case CLIENT_SERVER:
- /* Allow servers to send more commands in the first 10 secods
+ maxcmd = (int)(Client_UserCount() / 5)
+ + MAX_COMMANDS_SERVER_MIN;
+ /* Allow servers to handle even more commands while peering
* to speed up server login and network synchronisation. */
- if (starttime - Client_StartTime(c) < 10)
- maxcmd = MAX_COMMANDS_SERVER * 5;
- else
- maxcmd = MAX_COMMANDS_SERVER;
+ if (Conn_LastPing(Idx) == 0)
+ maxcmd *= 5;
break;
case CLIENT_SERVICE:
maxcmd = MAX_COMMANDS_SERVICE; break;