From cf7e19193b79af0711c5a03ac7da33bd84947b16 Mon Sep 17 00:00:00 2001 From: Florian Westphal Date: Mon, 31 Aug 2009 19:42:59 +0200 Subject: [PATCH] do not add default listening port if ssl ports were specified Cosmo Kastemaa reported that its impossible to create an ssl-only setup, as ngircd binds to port 6667 by default, even if setting "Ports =". Only add the default port if _both_ "Ports" and "SSLPorts" are unspecified. Fixes bugzilla #98. --- man/ngircd.conf.5.tmpl | 3 ++- src/ngircd/conf.c | 24 ++++++++++++++++++------ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/man/ngircd.conf.5.tmpl b/man/ngircd.conf.5.tmpl index 8e5b254a..a725af65 100644 --- a/man/ngircd.conf.5.tmpl +++ b/man/ngircd.conf.5.tmpl @@ -75,7 +75,8 @@ command. .TP \fBPorts\fR Ports on which the server should listen. There may be more than one port, -separated with commas (","). Default: 6667. +separated with commas (","). Default: 6667, unless \fBSSL_Ports\fR are also +specified. .TP \fBSSLPorts\fR Same as \fBPorts\fR , except that ngIRCd will expect incoming connections diff --git a/src/ngircd/conf.c b/src/ngircd/conf.c index eccf13cc..1d1bb482 100644 --- a/src/ngircd/conf.c +++ b/src/ngircd/conf.c @@ -542,6 +542,16 @@ Set_Defaults( bool InitServers ) } /* Set_Defaults */ +static bool +no_listenports(void) +{ + unsigned int cnt = array_bytes(&Conf_ListenPorts); +#ifdef SSL_SUPPORT + cnt += array_bytes(&Conf_SSLOptions.ListenPorts); +#endif + return cnt == 0; +} + static bool Read_Config( bool ngircd_starting ) { @@ -698,12 +708,14 @@ Read_Config( bool ngircd_starting ) Conf_Server[New_Server_Idx] = New_Server; } - if (0 == array_length(&Conf_ListenPorts, sizeof(UINT16))) { - if (!array_copyb(&Conf_ListenPorts, (char*) &defaultport, sizeof defaultport)) { - Config_Error( LOG_ALERT, "Could not add default listening Port %u: %s", - (unsigned int) defaultport, strerror(errno)); - exit( 1 ); - } + /* not a single listening port? Add default. */ + if (no_listenports() && + !array_copyb(&Conf_ListenPorts, (char*) &defaultport, sizeof defaultport)) + { + Config_Error(LOG_ALERT, "Could not add default listening Port %u: %s", + (unsigned int) defaultport, strerror(errno)); + + exit(1); } if (!Conf_ListenAddress)