]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/resolve.c
Check_Servers(): skip servers already beeing connected
[ngircd-alex.git] / src / ngircd / resolve.c
index 808ce53f55ed0e1e6d13c6fc82ebb90ecc0d1edd..9bc3a87a07e3a1fd91e960505d5e783e1c90f76a 100644 (file)
@@ -12,6 +12,8 @@
  */
 
 
+#define RESOLVER_TIMEOUT (Conf_PongTimeout*3)/4
+
 #include "portab.h"
 
 #include "imp.h"
@@ -33,6 +35,7 @@
 
 #include "array.h"
 #include "conn.h"
+#include "conf.h"
 #include "defines.h"
 #include "log.h"
 #include "ng_ipaddr.h"
@@ -42,7 +45,6 @@
 #include "io.h"
 
 
-static void Init_Subprocess PARAMS(( void ));
 static void Do_ResolveAddr PARAMS(( const ng_ipaddr_t *Addr, int Sock, int w_fd ));
 static void Do_ResolveName PARAMS(( const char *Host, int w_fd ));
 
@@ -64,13 +66,13 @@ Resolve_Addr(PROC_STAT * s, const ng_ipaddr_t *Addr, int identsock,
 
        assert(s != NULL);
 
-       pid = Proc_Fork(s, pipefd, cbfunc);
+       pid = Proc_Fork(s, pipefd, cbfunc, RESOLVER_TIMEOUT);
        if (pid > 0) {
                LogDebug("Resolver for %s created (PID %d).", ng_ipaddr_tostr(Addr), pid);
                return true;
        } else if( pid == 0 ) {
                /* Sub process */
-               Init_Subprocess();
+               Log_Init_Subprocess("Resolver");
                Do_ResolveAddr( Addr, identsock, pipefd[1]);
                Log_Exit_Subprocess("Resolver");
                exit(0);
@@ -90,7 +92,7 @@ Resolve_Name( PROC_STAT *s, const char *Host, void (*cbfunc)(int, short))
 
        assert(s != NULL);
 
-       pid = Proc_Fork(s, pipefd, cbfunc);
+       pid = Proc_Fork(s, pipefd, cbfunc, RESOLVER_TIMEOUT);
        if (pid > 0) {
                /* Main process */
 #ifdef DEBUG
@@ -99,7 +101,7 @@ Resolve_Name( PROC_STAT *s, const char *Host, void (*cbfunc)(int, short))
                return true;
        } else if( pid == 0 ) {
                /* Sub process */
-               Init_Subprocess();
+               Log_Init_Subprocess("Resolver");
                Do_ResolveName(Host, pipefd[1]);
                Log_Exit_Subprocess("Resolver");
                exit(0);
@@ -108,17 +110,6 @@ Resolve_Name( PROC_STAT *s, const char *Host, void (*cbfunc)(int, short))
 } /* Resolve_Name */
 
 
-/**
- * Initialize forked resolver subprocess.
- */
-static void
-Init_Subprocess(void)
-{
-       signal(SIGTERM, Proc_GenericSignalHandler);
-       Log_Init_Subprocess("Resolver");
-}
-
-
 #if !defined(HAVE_GETADDRINFO) || !defined(HAVE_GETNAMEINFO)
 #if !defined(WANT_IPV6) && defined(h_errno)
 static char *