mirror of
https://github.com/osmarks/ngircd.git
synced 2024-12-12 18:00:28 +00:00
Clean up duplicate servers correctly.
This commit is contained in:
parent
59a0fb8cd9
commit
02a22611be
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
|
|
||||||
static char UNUSED id[] = "$Id: conf.c,v 1.53 2002/12/31 16:12:50 alex Exp $";
|
static char UNUSED id[] = "$Id: conf.c,v 1.54 2003/03/27 01:21:38 alex Exp $";
|
||||||
|
|
||||||
#include "imp.h"
|
#include "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@ -210,7 +210,6 @@ Conf_UnsetServer( CONN_ID Idx )
|
|||||||
Conf_Server[i].lasttry = time( NULL ) - Conf_ConnectRetry + RECONNECT_DELAY;
|
Conf_Server[i].lasttry = time( NULL ) - Conf_ConnectRetry + RECONNECT_DELAY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
} /* Conf_UnsetServer */
|
} /* Conf_UnsetServer */
|
||||||
|
|
||||||
@ -368,7 +367,7 @@ Read_Config( VOID )
|
|||||||
/* Read configuration file. */
|
/* Read configuration file. */
|
||||||
|
|
||||||
CHAR section[LINE_LEN], str[LINE_LEN], *var, *arg, *ptr;
|
CHAR section[LINE_LEN], str[LINE_LEN], *var, *arg, *ptr;
|
||||||
INT line, i;
|
INT line, i, n;
|
||||||
FILE *fd;
|
FILE *fd;
|
||||||
|
|
||||||
/* Open configuration file */
|
/* Open configuration file */
|
||||||
@ -385,11 +384,37 @@ Read_Config( VOID )
|
|||||||
|
|
||||||
/* Clean up server configuration structure: mark all already
|
/* Clean up server configuration structure: mark all already
|
||||||
* configured servers as "once" so that they are deleted
|
* configured servers as "once" so that they are deleted
|
||||||
* after the next disconnect and delete all unused servers. */
|
* after the next disconnect and delete all unused servers.
|
||||||
|
* And delete all servers which are "duplicates" of servers
|
||||||
|
* that are already marked as "once" (such servers have been
|
||||||
|
* created by the last rehash but are now useless). */
|
||||||
for( i = 0; i < MAX_SERVERS; i++ )
|
for( i = 0; i < MAX_SERVERS; i++ )
|
||||||
{
|
{
|
||||||
if( Conf_Server[i].conn_id == NONE ) Init_Server_Struct( &Conf_Server[i] );
|
if( Conf_Server[i].conn_id == NONE ) Init_Server_Struct( &Conf_Server[i] );
|
||||||
else Conf_Server[i].flags |= CONF_SFLAG_ONCE;
|
else
|
||||||
|
{
|
||||||
|
/* This structure is in use ... */
|
||||||
|
if( Conf_Server[i].flags & CONF_SFLAG_ONCE )
|
||||||
|
{
|
||||||
|
/* Check for duplicates */
|
||||||
|
for( n = 0; n < MAX_SERVERS; n++ )
|
||||||
|
{
|
||||||
|
if( n == i ) continue;
|
||||||
|
|
||||||
|
if( Conf_Server[i].conn_id == Conf_Server[n].conn_id )
|
||||||
|
{
|
||||||
|
Init_Server_Struct( &Conf_Server[n] );
|
||||||
|
Log( LOG_DEBUG, "Deleted unused duplicate server %d (kept %d).", n, i );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Mark server as "once" */
|
||||||
|
Conf_Server[i].flags |= CONF_SFLAG_ONCE;
|
||||||
|
Log( LOG_DEBUG, "Market server %d as \"once\"", i );
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize variables */
|
/* Initialize variables */
|
||||||
|
Loading…
Reference in New Issue
Block a user