remove ip-string from Conf_Server struct
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.
This commit is contained in:
parent
37563537a9
commit
47a0379e2b
|
@ -8,7 +8,7 @@
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
* Please read the file COPYING, README and AUTHORS for more information.
|
* 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)
|
* Configuration management (header)
|
||||||
*/
|
*/
|
||||||
|
@ -33,7 +33,6 @@ typedef struct _Conf_Oper
|
||||||
typedef struct _Conf_Server
|
typedef struct _Conf_Server
|
||||||
{
|
{
|
||||||
char host[HOST_LEN]; /* Hostname */
|
char host[HOST_LEN]; /* Hostname */
|
||||||
char ip[16]; /* IP address (Resolver) */
|
|
||||||
char name[CLIENT_ID_LEN]; /* IRC-Client-ID */
|
char name[CLIENT_ID_LEN]; /* IRC-Client-ID */
|
||||||
char pwd_in[CLIENT_PASS_LEN]; /* Password which must be received */
|
char pwd_in[CLIENT_PASS_LEN]; /* Password which must be received */
|
||||||
char pwd_out[CLIENT_PASS_LEN]; /* Password to send to peer */
|
char pwd_out[CLIENT_PASS_LEN]; /* Password to send to peer */
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
#include "io.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 "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
@ -92,7 +92,7 @@ static void Check_Connections PARAMS(( void ));
|
||||||
static void Check_Servers PARAMS(( void ));
|
static void Check_Servers PARAMS(( void ));
|
||||||
static void Init_Conn_Struct PARAMS(( CONN_ID Idx ));
|
static void Init_Conn_Struct PARAMS(( CONN_ID Idx ));
|
||||||
static bool Init_Socket PARAMS(( int Sock ));
|
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 void Simple_Message PARAMS(( int Sock, const char *Msg ));
|
||||||
static int Count_Connections PARAMS(( struct sockaddr_in addr ));
|
static int Count_Connections PARAMS(( struct sockaddr_in addr ));
|
||||||
static int NewListener PARAMS(( const UINT16 Port ));
|
static int NewListener PARAMS(( const UINT16 Port ));
|
||||||
|
@ -1373,39 +1373,21 @@ Check_Servers( void )
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
New_Server( int Server )
|
New_Server( int Server , struct in_addr *dest)
|
||||||
{
|
{
|
||||||
/* Establish new server link */
|
/* Establish new server link */
|
||||||
struct sockaddr_in local_addr;
|
struct sockaddr_in local_addr;
|
||||||
struct sockaddr_in new_addr;
|
struct sockaddr_in new_addr;
|
||||||
struct in_addr inaddr;
|
|
||||||
int res, new_sock;
|
int res, new_sock;
|
||||||
CLIENT *c;
|
CLIENT *c;
|
||||||
|
|
||||||
assert( Server > NONE );
|
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 ));
|
memset(&new_addr, 0, sizeof( new_addr ));
|
||||||
new_addr.sin_family = AF_INET;
|
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_addr.sin_port = htons( Conf_Server[Server].port );
|
||||||
|
|
||||||
|
|
||||||
new_sock = socket( PF_INET, SOCK_STREAM, 0 );
|
new_sock = socket( PF_INET, SOCK_STREAM, 0 );
|
||||||
if ( new_sock < 0 ) {
|
if ( new_sock < 0 ) {
|
||||||
Log( LOG_CRIT, "Can't create socket: %s!", strerror( errno ));
|
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 */
|
/* Read result of resolver sub-process from pipe and start connection */
|
||||||
int i;
|
int i;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
struct in_addr dest_addr;
|
||||||
char readbuf[HOST_LEN + 1];
|
char readbuf[HOST_LEN + 1];
|
||||||
|
|
||||||
LogDebug("Resolver: Got forward lookup callback on fd %d, events %d", fd, events);
|
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 )
|
if (Resolve_Getfd(&Conf_Server[i].res_stat) == fd )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( i >= MAX_SERVERS) {
|
if( i >= MAX_SERVERS) {
|
||||||
/* Ops, no matching server found?! */
|
/* Ops, no matching server found?! */
|
||||||
io_close( fd );
|
io_close( fd );
|
||||||
|
@ -1551,16 +1534,23 @@ cb_Connect_to_Server(int fd, UNUSED short events)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Read result from pipe */
|
/* 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)
|
if (len == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
readbuf[len] = '\0';
|
readbuf[len] = '\0';
|
||||||
LogDebug("Got result from resolver: \"%s\" (%u bytes read).", readbuf, len);
|
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() */
|
/* connect() */
|
||||||
New_Server(i);
|
New_Server(i, &dest_addr);
|
||||||
} /* cb_Read_Forward_Lookup */
|
} /* cb_Read_Forward_Lookup */
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue