From: Florian Westphal Date: Fri, 9 Dec 2005 09:26:55 +0000 (+0000) Subject: Fix Bugzilla #64 -- ngicrd did not reconnect to other servers after failed forward... X-Git-Tag: rel-0-10-0-pre1~62 X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=commitdiff_plain;ds=sidebyside;h=4b2f966b7e9215760318ab863202ffb2ac88b345;p=ngircd.git Fix Bugzilla #64 -- ngicrd did not reconnect to other servers after failed forward dns lookup. --- diff --git a/src/ngircd/conn.c b/src/ngircd/conn.c index e2b90a23..8f0675ce 100644 --- a/src/ngircd/conn.c +++ b/src/ngircd/conn.c @@ -17,7 +17,7 @@ #include "portab.h" #include "io.h" -static char UNUSED id[] = "$Id: conn.c,v 1.185 2005/11/21 15:06:37 alex Exp $"; +static char UNUSED id[] = "$Id: conn.c,v 1.186 2005/12/09 09:26:55 fw Exp $"; #include "imp.h" #include @@ -1557,15 +1557,15 @@ cb_Read_Resolver_Result( int r_fd, UNUSED short events ) /* Read result from pipe */ len = Resolve_Read(&My_Connections[i].res_stat, readbuf, sizeof readbuf -1); - if (len == 0) - return; + if (len == 0) + goto out; readbuf[len] = '\0'; identptr = strchr(readbuf, '\n'); assert(identptr != NULL); if (!identptr) { Log( LOG_CRIT, "Resolver: Got malformed result!"); - return; + goto out; } *identptr = '\0'; @@ -1610,6 +1610,16 @@ cb_Read_Resolver_Result( int r_fd, UNUSED short events ) /* Reset penalty time */ Conn_ResetPenalty( i ); + return; +out: + if (My_Connections[i].sock == SERVER_WAIT) { + n = Conf_GetServer( i ); + assert(n > NONE ); + if (n > NONE) { + Conf_Server[n].conn_id = NONE; + Init_Conn_Struct(i); + } + } } /* cb_Read_Resolver_Result */