1
0
mirror of https://github.com/osmarks/ngircd.git synced 2024-12-12 09:50:29 +00:00

Conn_SyncServerStruct(): test all connections; and work case insensitive

Fix synchronization of established connections and configured server
structures after a configuration update:

 - Not only test servers that already have a connection, but also check
   and update configured servers to which a new connection is beeing
   established (SERVER_WAIT state).

 - And do the server name comparision case-insensitive.
This commit is contained in:
Alexander Barton 2010-09-08 02:02:01 +02:00
parent 8d68fe3f86
commit 6349ec8bb3

View File

@ -1139,32 +1139,32 @@ Conn_CountAccepted(void)
} /* Conn_CountAccepted */ } /* Conn_CountAccepted */
/**
* Synchronize established connections and configured server structures
* after a configuration update and store the correct connection IDs, if any.
*/
GLOBAL void GLOBAL void
Conn_SyncServerStruct( void ) Conn_SyncServerStruct(void)
{ {
/* Synchronize server structures (connection IDs):
* connections <-> configuration */
CLIENT *client; CLIENT *client;
CONN_ID i; CONN_ID i;
int c; int c;
for( i = 0; i < Pool_Size; i++ ) { for (i = 0; i < Pool_Size; i++) {
/* Established connection? */ if (My_Connections[i].sock == NONE)
if (My_Connections[i].sock < 0)
continue; continue;
/* Server connection? */ /* Server link? */
client = Conn_GetClient( i ); client = Conn_GetClient(i);
if(( ! client ) || ( Client_Type( client ) != CLIENT_SERVER )) continue; if (!client || Client_Type(client) != CLIENT_SERVER)
continue;
for( c = 0; c < MAX_SERVERS; c++ ) for (c = 0; c < MAX_SERVERS; c++) {
{
/* Configured server? */ /* Configured server? */
if( ! Conf_Server[c].host[0] ) continue; if (!Conf_Server[c].host[0])
continue;
/* Duplicate? */ if (strcasecmp(Conf_Server[c].name, Client_ID(client)) == 0)
if( strcmp( Conf_Server[c].name, Client_ID( client )) == 0 )
Conf_Server[c].conn_id = i; Conf_Server[c].conn_id = i;
} }
} }