summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/Config/Common.pm14
1 files changed, 9 insertions, 5 deletions
diff --git a/Bugzilla/Config/Common.pm b/Bugzilla/Config/Common.pm
index f5f5a3fb2..e6f0398e3 100644
--- a/Bugzilla/Config/Common.pm
+++ b/Bugzilla/Config/Common.pm
@@ -101,17 +101,21 @@ sub check_sslbase {
return "must be a legal URL, that starts with https and ends with a slash.";
}
my $host = $1;
- if ($host =~ /:\d+$/) {
- return "must not contain a port.";
+ # Fall back to port 443 if for some reason getservbyname() fails.
+ my $port = getservbyname('https', 'tcp') || 443;
+ if ($host =~ /^(.+):(\d+)$/) {
+ $host = $1;
+ $port = $2;
}
local *SOCK;
my $proto = getprotobyname('tcp');
socket(SOCK, PF_INET, SOCK_STREAM, $proto);
- my $sin = sockaddr_in(443, inet_aton($host));
+ my $iaddr = inet_aton($host) || return "The host $host cannot be resolved";
+ my $sin = sockaddr_in($port, $iaddr);
if (!connect(SOCK, $sin)) {
- return "Failed to connect to " . html_quote($host) .
- ":443, unable to enable SSL.";
+ return "Failed to connect to $host:$port; unable to enable SSL";
}
+ close(SOCK);
}
return "";
}