From: Alexander Barton Date: Thu, 27 Mar 2003 01:20:22 +0000 (+0000) Subject: New function Conn_SyncServerStruct(). X-Git-Tag: rel-0-7-0-pre1~31 X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=commitdiff_plain;h=59a0fb8cd999d07ce46b1c5d071d9765af9ddbe8 New function Conn_SyncServerStruct(). --- diff --git a/src/ngircd/conn.c b/src/ngircd/conn.c index 882251bc..fa8b3053 100644 --- a/src/ngircd/conn.c +++ b/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 @@ -683,6 +683,37 @@ Conn_Close( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN InformClient ) } /* 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 ) { diff --git a/src/ngircd/conn.h b/src/ngircd/conn.h index 2194f537..ffbfe64a 100644 --- a/src/ngircd/conn.h +++ b/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, CHAR *Format, ... )); GLOBAL VOID Conn_Close PARAMS(( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN InformClient )); +GLOBAL VOID Conn_SyncServerStruct PARAMS(( VOID )); GLOBAL INT Conn_MaxFD;