commit 59a0fb8cd999d07ce46b1c5d071d9765af9ddbe8 from: Alexander Barton date: Thu Mar 27 01:20:22 2003 UTC New function Conn_SyncServerStruct(). commit - d383703b78f78a49f8bd44356e557d6efb346c9a commit + 59a0fb8cd999d07ce46b1c5d071d9765af9ddbe8 blob - 882251bcd80f5abf8fe776ed152647649543e4b9 blob + fa8b30535622f499d3f218b5f22605dbc6cffd97 --- src/ngircd/conn.c +++ src/ngircd/conn.c @@ -16,7 +16,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: conn.c,v 1.119 2003/03/07 17:16:49 alex Exp $"; +static char UNUSED id[] = "$Id: conn.c,v 1.120 2003/03/27 01:20:22 alex Exp $"; #include "imp.h" #include @@ -681,8 +681,39 @@ Conn_Close( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, B /* Clean up connection structure (=free it) */ Init_Conn_Struct( Idx ); } /* Conn_Close */ + + +GLOBAL VOID +Conn_SyncServerStruct( VOID ) +{ + /* Synchronize server structures (connection IDs): + * connections <-> configuration */ + CLIENT *client; + CONN_ID i; + INT c; + for( i = 0; i < Pool_Size; i++ ) + { + /* Established connection? */ + if( My_Connections[i].sock <= NONE ) continue; + + /* Server connection? */ + client = Client_GetFromConn( i ); + if(( ! client ) || ( Client_Type( client ) != CLIENT_SERVER )) continue; + + for( c = 0; c < MAX_SERVERS; c++ ) + { + /* Configured server? */ + if( ! Conf_Server[c].host[0] ) continue; + + /* Duplicate? */ + if( strcmp( Conf_Server[c].name, Client_ID( client )) == 0 ) Conf_Server[c].conn_id = i; + } + } +} /* SyncServerStruct */ + + LOCAL BOOLEAN Try_Write( CONN_ID Idx ) { blob - 2194f5371d1edfecf75e35d5993545d92a1bb869 blob + ffbfe64a909d9813ebb05fc6aded31bf9cbe168f --- src/ngircd/conn.h +++ src/ngircd/conn.h @@ -8,7 +8,7 @@ * (at your option) any later version. * Please read the file COPYING, README and AUTHORS for more information. * - * $Id: conn.h,v 1.30 2003/02/21 19:18:48 alex Exp $ + * $Id: conn.h,v 1.31 2003/03/27 01:20:22 alex Exp $ * * Connection management (header) */ @@ -96,6 +96,7 @@ GLOBAL BOOLEAN Conn_WriteStr PARAMS(( CONN_ID Idx, CHA GLOBAL VOID Conn_Close PARAMS(( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN InformClient )); +GLOBAL VOID Conn_SyncServerStruct PARAMS(( VOID )); GLOBAL INT Conn_MaxFD;