]> arthur.barton.de Git - ngircd-alex.git/commitdiff
remove ip-string from Conf_Server struct
authorFlorian Westphal <fw@strlen.de>
Fri, 23 Nov 2007 16:28:37 +0000 (16:28 +0000)
committerFlorian Westphal <fw@strlen.de>
Fri, 23 Nov 2007 16:28:37 +0000 (16:28 +0000)
struct Conf_Server stored the ip address to connect to
in dotted-decimal notation; but we only need this for connect()
so long-time storage isn't necessary.

src/ngircd/conf.h
src/ngircd/conn.c

index 9e15226674994e8dbe56a84f1d6a3e30be96b24e..5ae7f5d6a79f7ccbaaed3e65fc37510f240d5a83 100644 (file)
@@ -8,7 +8,7 @@
  * (at your option) any later version.
  * Please read the file COPYING, README and AUTHORS for more information.
  *
- * $Id: conf.h,v 1.46 2007/11/23 16:26:04 fw Exp $
+ * $Id: conf.h,v 1.47 2007/11/23 16:28:37 fw Exp $
  *
  * Configuration management (header)
  */
@@ -33,7 +33,6 @@ typedef struct _Conf_Oper
 typedef struct _Conf_Server
 {
        char host[HOST_LEN];            /* Hostname */
-       char ip[16];                    /* IP address (Resolver) */
        char name[CLIENT_ID_LEN];       /* IRC-Client-ID */
        char pwd_in[CLIENT_PASS_LEN];   /* Password which must be received */
        char pwd_out[CLIENT_PASS_LEN];  /* Password to send to peer */
index 07c8078374af0512ce69211b13fb363b9646dcf5..405c07b21c9756c2f07889db1afd14e203017287 100644 (file)
@@ -17,7 +17,7 @@
 #include "portab.h"
 #include "io.h"
 
-static char UNUSED id[] = "$Id: conn.c,v 1.215 2007/11/23 16:26:04 fw Exp $";
+static char UNUSED id[] = "$Id: conn.c,v 1.216 2007/11/23 16:28:37 fw Exp $";
 
 #include "imp.h"
 #include <assert.h>
@@ -92,7 +92,7 @@ static void Check_Connections PARAMS(( void ));
 static void Check_Servers PARAMS(( void ));
 static void Init_Conn_Struct PARAMS(( CONN_ID Idx ));
 static bool Init_Socket PARAMS(( int Sock ));
-static void New_Server PARAMS(( int Server ));
+static void New_Server PARAMS(( int Server, struct in_addr *dest));
 static void Simple_Message PARAMS(( int Sock, const char *Msg ));
 static int Count_Connections PARAMS(( struct sockaddr_in addr ));
 static int NewListener PARAMS(( const UINT16 Port ));
@@ -1373,39 +1373,21 @@ Check_Servers( void )
 
 
 static void
-New_Server( int Server )
+New_Server( int Server , struct in_addr *dest)
 {
        /* Establish new server link */
        struct sockaddr_in local_addr;
        struct sockaddr_in new_addr;
-       struct in_addr inaddr;
        int res, new_sock;
        CLIENT *c;
 
        assert( Server > NONE );
 
-       Log( LOG_INFO, "Establishing connection to \"%s\", %s, port %d ... ", Conf_Server[Server].host,
-                                                       Conf_Server[Server].ip, Conf_Server[Server].port );
-
-#ifdef HAVE_INET_ATON
-       if( inet_aton( Conf_Server[Server].ip, &inaddr ) == 0 )
-#else
-       memset( &inaddr, 0, sizeof( inaddr ));
-       inaddr.s_addr = inet_addr( Conf_Server[Server].ip );
-       if( inaddr.s_addr == (unsigned)-1 )
-#endif
-       {
-               Log( LOG_ERR, "Can't connect to \"%s\": can't convert ip address %s!",
-                               Conf_Server[Server].host, Conf_Server[Server].ip );
-               return;
-       }
-
        memset(&new_addr, 0, sizeof( new_addr ));
        new_addr.sin_family = AF_INET;
-       new_addr.sin_addr = inaddr;
+       new_addr.sin_addr = *dest;
        new_addr.sin_port = htons( Conf_Server[Server].port );
 
-
        new_sock = socket( PF_INET, SOCK_STREAM, 0 );
        if ( new_sock < 0 ) {
                Log( LOG_CRIT, "Can't create socket: %s!", strerror( errno ));
@@ -1534,6 +1516,7 @@ cb_Connect_to_Server(int fd, UNUSED short events)
        /* Read result of resolver sub-process from pipe and start connection */
        int i;
        size_t len;
+       struct in_addr dest_addr;
        char readbuf[HOST_LEN + 1];
 
        LogDebug("Resolver: Got forward lookup callback on fd %d, events %d", fd, events);
@@ -1542,7 +1525,7 @@ cb_Connect_to_Server(int fd, UNUSED short events)
                  if (Resolve_Getfd(&Conf_Server[i].res_stat) == fd )
                          break;
        }
-       
+
        if( i >= MAX_SERVERS) {
                /* Ops, no matching server found?! */
                io_close( fd );
@@ -1551,16 +1534,23 @@ cb_Connect_to_Server(int fd, UNUSED short events)
        }
 
        /* Read result from pipe */
-       len = Resolve_Read(&Conf_Server[i].res_stat, readbuf, sizeof readbuf -1);
+       len = Resolve_Read(&Conf_Server[i].res_stat, readbuf, sizeof(readbuf)-1);
        if (len == 0)
                return;
-       
+
        readbuf[len] = '\0';
        LogDebug("Got result from resolver: \"%s\" (%u bytes read).", readbuf, len);
-       strlcpy( Conf_Server[i].ip, readbuf, sizeof( Conf_Server[i].ip ));
 
+       if (!ngt_IPStrToBin(readbuf, &dest_addr)) {
+               Log(LOG_ERR, "Can't connect to \"%s\": can't convert ip address %s!",
+                                               Conf_Server[i].host, readbuf);
+               return;
+       }
+
+       Log( LOG_INFO, "Establishing connection to \"%s\", %s, port %d ... ",
+                       Conf_Server[i].host, readbuf, Conf_Server[i].port );
        /* connect() */
-       New_Server(i);
+       New_Server(i, &dest_addr);
 } /* cb_Read_Forward_Lookup */