commit 001c00b27312289e40425db19ce9f7d957ffbbba from: Florian Westphal date: Thu Oct 25 11:01:19 2007 UTC New config option NoDNS: disables all DNS queries. commit - b861f536b29e2a7989f77b0dcb26287dae897885 commit + 001c00b27312289e40425db19ce9f7d957ffbbba blob - f2443671b1bebc809f2c3eae3f06d4b1dc46b1ea blob + 8321900926d6218ec9ffb7ad34a3166a90f608dd --- man/ngircd.conf.5.tmpl +++ man/ngircd.conf.5.tmpl @@ -1,5 +1,5 @@ .\" -.\" $Id: ngircd.conf.5.tmpl,v 1.4 2007/10/13 20:45:12 fw Exp $ +.\" $Id: ngircd.conf.5.tmpl,v 1.5 2007/10/25 11:01:19 fw Exp $ .\" .TH ngircd.conf 5 "August 2005" ngircd "ngIRCd Manual" .SH NAME @@ -150,7 +150,14 @@ by non-chanops as if they were coming from the server. If enabled, no new channels can be created. Useful if you do not want to have channels other than those defined in the config file. +Default: No. .TP +\fBNoDNS\fR +If enabled, ngircd will not make DNS lookups when clients connect. +If you configure ngircd to connect to other servers, ngircd may still +perform a DNS lookup if required. +Default: No. +.TP \fBMaxConnections\fR Maximum number of simultaneous connection the server is allowed to accept (0: unlimited). Default: 0. blob - 1e35fd81dc64994cfd7694e8d756d5a954352850 blob + 474ae4b6460c4be738b90e723065885ffa0a51ad --- src/ngircd/client.c +++ src/ngircd/client.c @@ -17,7 +17,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: client.c,v 1.95 2007/01/23 16:07:19 alex Exp $"; +static char UNUSED id[] = "$Id: client.c,v 1.96 2007/10/25 11:01:19 fw Exp $"; #include "imp.h" #include @@ -94,9 +94,10 @@ Client_Init( void ) This_Server->hops = 0; gethostname( This_Server->host, CLIENT_HOST_LEN ); - h = gethostbyname( This_Server->host ); - if( h ) strlcpy( This_Server->host, h->h_name, sizeof( This_Server->host )); - + if (!Conf_NoDNS) { + h = gethostbyname( This_Server->host ); + if (h) strlcpy(This_Server->host, h->h_name, sizeof(This_Server->host)); + } Client_SetID( This_Server, Conf_ServerName ); Client_SetInfo( This_Server, Conf_ServerInfo ); blob - 3c7b42d5063d7d90b8d260a308af9db1bef1f98b blob + c9643dad491d75c5abefb7af49a7431ef31f1991 --- src/ngircd/conf.c +++ src/ngircd/conf.c @@ -14,7 +14,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: conf.c,v 1.100 2007/10/24 00:48:41 fw Exp $"; +static char UNUSED id[] = "$Id: conf.c,v 1.101 2007/10/25 11:01:19 fw Exp $"; #include "imp.h" #include @@ -205,6 +205,7 @@ Conf_Test( void ) printf( " OperCanUseMode = %s\n", Conf_OperCanMode == true ? "yes" : "no" ); printf( " OperServerMode = %s\n", Conf_OperServerMode == true? "yes" : "no" ); printf( " PredefChannelsOnly = %s\n", Conf_PredefChannelsOnly == true ? "yes" : "no" ); + printf( " NoDNS = %s\n", Conf_NoDNS ? "yes" : "no"); printf( " MaxConnections = %ld\n", Conf_MaxConnections); printf( " MaxConnectionsIP = %d\n", Conf_MaxConnectionsIP); printf( " MaxJoins = %d\n\n", Conf_MaxJoins); @@ -444,6 +445,7 @@ Set_Defaults( bool InitServers ) Conf_Channel_Count = 0; Conf_OperCanMode = false; + Conf_NoDNS = false; Conf_PredefChannelsOnly = false; Conf_OperServerMode = false; @@ -783,6 +785,11 @@ Handle_GLOBAL( int Line, char *Var, char *Arg ) Conf_PredefChannelsOnly = Check_ArgIsTrue( Arg ); return; } + if( strcasecmp( Var, "NoDNS" ) == 0 ) { + /* don't do reverse dns lookups when clients connect? */ + Conf_NoDNS = Check_ArgIsTrue( Arg ); + return; + } if( strcasecmp( Var, "OperCanUseMode" ) == 0 ) { /* Are IRC operators allowed to use MODE in channels they aren't Op in? */ Conf_OperCanMode = Check_ArgIsTrue( Arg ); blob - e927739d791091a55d0e36408d157e8c39ba5f76 blob + ce09997c23ee8bffeb460c405a3791fa922b527c --- src/ngircd/conf.h +++ src/ngircd/conf.h @@ -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.43 2007/06/28 05:15:18 fw Exp $ + * $Id: conf.h,v 1.44 2007/10/25 11:01:19 fw Exp $ * * Configuration management (header) */ @@ -118,6 +118,9 @@ GLOBAL bool Conf_PredefChannelsOnly; /* Are IRC operators allowed to always use MODE? */ GLOBAL bool Conf_OperCanMode; +/* Disable all DNS functions? */ +GLOBAL bool Conf_NoDNS; + /* If an IRC op gives chanop privileges without being a chanop, * ircd2 will ignore the command. This enables a workaround: * It masks the command as coming from the server */ blob - f992bc25817df47070169b7608bda8f3b9f19710 blob + 8cd98ab0f2d0f2e8f31a1daabcb422bc39d977b4 --- src/ngircd/conn.c +++ src/ngircd/conn.c @@ -17,7 +17,7 @@ #include "portab.h" #include "io.h" -static char UNUSED id[] = "$Id: conn.c,v 1.212 2007/10/04 15:03:56 alex Exp $"; +static char UNUSED id[] = "$Id: conn.c,v 1.213 2007/10/25 11:01:19 fw Exp $"; #include "imp.h" #include @@ -1039,11 +1039,11 @@ New_Connection( int Sock ) Client_SetHostname( c, My_Connections[new_sock].host ); - Resolve_Addr(&My_Connections[new_sock].res_stat, &new_addr, - My_Connections[new_sock].sock, cb_Read_Resolver_Result); + if (!Conf_NoDNS) + Resolve_Addr(&My_Connections[new_sock].res_stat, &new_addr, + My_Connections[new_sock].sock, cb_Read_Resolver_Result); - /* Penalty-Zeit setzen */ - Conn_SetPenalty( new_sock, 4 ); + Conn_SetPenalty(new_sock, 4); return new_sock; } /* New_Connection */