X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fngircd%2Fconn.c;h=b6e628092633fb68a34b8175e383b195033d9b0f;hb=7faa3ed7d6613f23e998604461f543e763278f7e;hp=f743d1f81b2331a81a3cbcc6bbbf9ca99b645b58;hpb=5a200e154347bde2a885ad1ede620d8d946b6420;p=ngircd-alex.git diff --git a/src/ngircd/conn.c b/src/ngircd/conn.c index f743d1f8..b6e62809 100644 --- a/src/ngircd/conn.c +++ b/src/ngircd/conn.c @@ -82,8 +82,8 @@ #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 )); @@ -1438,7 +1438,7 @@ New_Connection(int Sock) return -1; } - c = Client_NewLocal(new_sock, ip_str, CLIENT_UNKNOWN, false); + c = Client_NewLocal(new_sock, NULL, CLIENT_UNKNOWN, false); if (!c) { Log(LOG_ALERT, "Can't accept connection: can't create client structure!"); @@ -1589,7 +1589,7 @@ Read_Request( CONN_ID Idx ) if (!array_catb(&My_Connections[Idx].zip.rbuf, readbuf, (size_t) len)) { Log(LOG_ERR, - "Could not append recieved data to zip input buffer (connection %d): %d bytes!", + "Could not append received data to zip input buffer (connection %d): %d bytes!", Idx, len); Conn_Close(Idx, "Receive buffer space exhausted", NULL, false); @@ -1600,7 +1600,7 @@ Read_Request( CONN_ID Idx ) { if (!array_catb( &My_Connections[Idx].rbuf, readbuf, len)) { Log(LOG_ERR, - "Could not append recieved data to input buffer (connection %d): %d bytes!", + "Could not append received data to input buffer (connection %d): %d bytes!", Idx, len); Conn_Close(Idx, "Receive buffer space exhausted", NULL, false ); } @@ -1674,16 +1674,15 @@ Handle_Buffer(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;