From 32e4168370c0354f7b9158deb302db61eaf0601b Mon Sep 17 00:00:00 2001 From: Michiel Broek Date: Mon, 18 Apr 2005 18:46:08 +0000 Subject: [PATCH] Added router field --- mbtask/taskibc.c | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/mbtask/taskibc.c b/mbtask/taskibc.c index 192c488d..b15220a9 100644 --- a/mbtask/taskibc.c +++ b/mbtask/taskibc.c @@ -71,6 +71,7 @@ void dump_ncslist(void); void tidy_servers(srv_list **); void add_server(srv_list **, char *, int, char *, char *, char *, char *); void del_server(srv_list **, char *); +void del_router(srv_list **, char *); int send_msg(int, struct sockaddr_in, char *, char *); void broadcast(char *, char *); void check_servers(void); @@ -137,7 +138,7 @@ void dump_ncslist(void) Syslog('r', "Server Router Hops Users Connect time"); Syslog('r', "------------------------- ------------------------- ----- ----- --------------------"); for (srv = servers; srv; srv = srv->next) { - Syslog('r', "%-30s %-30s %5d %5d %s", srv->server, srv->router, srv->hops, srv->users, rfcdate(srv->connected)); + Syslog('r', "%-25s %-25s %5d %5d %s", srv->server, srv->router, srv->hops, srv->users, rfcdate(srv->connected)); } changed = FALSE; } @@ -187,6 +188,9 @@ void add_server(srv_list **fdp, char *name, int hops, char *prod, char *vers, ch +/* + * Delete server. + */ void del_server(srv_list **fap, char *name) { srv_list *ta, *tan; @@ -206,6 +210,28 @@ void del_server(srv_list **fap, char *name) +/* + * Delete router. + */ +void del_router(srv_list **fap, char *name) +{ + srv_list *ta, *tan; + + Syslog('r', "delrouter %s", name); + + if (*fap == NULL) + return; + for (ta = *fap; ta; ta = ta->next) { + while ((tan = ta->next) && (strcmp(tan->router, name) == 0)) { + ta->next = tan->next; + free(tan); + } + ta->next = tan; + } +} + + + /* * Send a message to all servers */ @@ -434,7 +460,7 @@ void check_servers(void) tnsl->gotpass = FALSE; tnsl->gotserver = FALSE; tnsl->token = 0; - del_server(&servers, tnsl->server); + del_router(&servers, tnsl->server); changed = TRUE; break; } @@ -646,13 +672,14 @@ void command_squit(char *hostname, char *parameters) tnsl->gotpass = FALSE; tnsl->gotserver = FALSE; tnsl->token = 0; + del_router(&servers, name); } else { Syslog('r', "IBC: disconnect server %s: message is not for us, but update database", name); + del_server(&servers, name); } sprintf(temp, "SQUIT %s %s", name, message); broadcast(temp, hostname); - del_server(&servers, name); changed = TRUE; }