From 5e929effcae7a273f55a0011632b86a0811cf35f Mon Sep 17 00:00:00 2001 From: Alexander Barton Date: Sat, 5 Mar 2005 12:57:14 +0000 Subject: [PATCH] New function New_Res_Stat() to initialize RES_STAT structure. --- src/ngircd/resolve.c | 73 ++++++++++++++++++++++---------------------- 1 file changed, 37 insertions(+), 36 deletions(-) diff --git a/src/ngircd/resolve.c b/src/ngircd/resolve.c index 36e16e56..846e5236 100644 --- a/src/ngircd/resolve.c +++ b/src/ngircd/resolve.c @@ -14,7 +14,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: resolve.c,v 1.9 2004/05/11 00:01:11 alex Exp $"; +static char UNUSED id[] = "$Id: resolve.c,v 1.10 2005/03/05 12:57:14 alex Exp $"; #include "imp.h" #include @@ -53,6 +53,8 @@ LOCAL VOID Do_ResolveName PARAMS(( CHAR *Host, INT w_fd )); LOCAL CHAR *Get_Error PARAMS(( INT H_Error )); #endif +LOCAL RES_STAT *New_Res_Stat PARAMS(( VOID )); + GLOBAL VOID Resolve_Init( VOID ) @@ -77,21 +79,8 @@ Resolve_Addr( struct sockaddr_in *Addr ) RES_STAT *s; INT pid; - /* Allocate memory */ - s = (RES_STAT *)malloc( sizeof( RES_STAT )); - if( ! s ) - { - Log( LOG_EMERG, "Resolver: Can't allocate memory! [Resolve_Addr]" ); - return NULL; - } - - /* Initialize pipe for result */ - if( pipe( s->pipe ) != 0 ) - { - free( s ); - Log( LOG_ALERT, "Resolver: Can't create output pipe: %s!", strerror( errno )); - return NULL; - } + s = New_Res_Stat( ); + if( ! s ) return NULL; /* For sub-process */ pid = fork( ); @@ -102,8 +91,6 @@ Resolve_Addr( struct sockaddr_in *Addr ) FD_SET( s->pipe[0], &Resolver_FDs ); if( s->pipe[0] > Conn_MaxFD ) Conn_MaxFD = s->pipe[0]; s->pid = pid; - s->stage = 0; - s->bufpos = 0; return s; } else if( pid == 0 ) @@ -137,21 +124,8 @@ Resolve_Name( CHAR *Host ) RES_STAT *s; INT pid; - /* Allocate memory */ - s = (RES_STAT *)malloc( sizeof( RES_STAT )); - if( ! s ) - { - Log( LOG_EMERG, "Resolver: Can't allocate memory! [Resolve_Name]" ); - return NULL; - } - - /* Initialize the pipe for the result */ - if( pipe( s->pipe ) != 0 ) - { - free( s ); - Log( LOG_ALERT, "Resolver: Can't create output pipe: %s!", strerror( errno )); - return NULL; - } + s = New_Res_Stat( ); + if( ! s ) return NULL; /* Fork sub-process */ pid = fork( ); @@ -162,8 +136,6 @@ Resolve_Name( CHAR *Host ) FD_SET( s->pipe[0], &Resolver_FDs ); if( s->pipe[0] > Conn_MaxFD ) Conn_MaxFD = s->pipe[0]; s->pid = pid; - s->stage = 0; - s->bufpos = 0; return s; } else if( pid == 0 ) @@ -274,7 +246,7 @@ Do_ResolveName( CHAR *Host, INT w_fd ) #else Log_Resolver( LOG_WARNING, "Can't resolve \"%s\"!", Host ); #endif - strcpy( ip, "" ); + ip[0] = '\0'; } if( ip[0] ) Log_Resolver( LOG_DEBUG, "Ok, translated \"%s\" to %s.", Host, ip ); @@ -314,4 +286,33 @@ Get_Error( INT H_Error ) #endif +LOCAL RES_STAT * +New_Res_Stat( VOID ) +{ + RES_STAT *s; + + /* Allocate memory */ + s = (RES_STAT *)malloc( sizeof( RES_STAT )); + if( ! s ) + { + Log( LOG_EMERG, "Resolver: Can't allocate memory! [Resolve_Addr]" ); + return NULL; + } + + /* Initialize pipe for result */ + if( pipe( s->pipe ) != 0 ) + { + free( s ); + Log( LOG_ALERT, "Resolver: Can't create output pipe: %s!", strerror( errno )); + return NULL; + } + + s->stage = 0; + s->bufpos = 0; + s->pid = -1; + + return s; +} /* New_Res_Stat */ + + /* -eof- */ -- 2.39.2