summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2005-12-09 09:26:55 +0000
committerFlorian Westphal <fw@strlen.de>2005-12-09 09:26:55 +0000
commit4b2f966b7e9215760318ab863202ffb2ac88b345 (patch)
tree8b965e53fdc86f4d9c6bebfc221aabd88d53f80b /src
parenta29308802730068270e5032831ea56e2a4fac74b (diff)
downloadngircd-4b2f966b7e9215760318ab863202ffb2ac88b345.tar.gz
ngircd-4b2f966b7e9215760318ab863202ffb2ac88b345.zip
Fix Bugzilla #64 -- ngicrd did not reconnect to other servers after failed forward dns lookup.
Diffstat (limited to 'src')
-rw-r--r--src/ngircd/conn.c18
1 files changed, 14 insertions, 4 deletions
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 <assert.h>
@@ -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 */