aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIain Sandoe <iain@sandoe.co.uk>2022-03-13 16:29:45 +0000
committerIain Sandoe <iain@sandoe.co.uk>2022-03-18 15:23:23 +0000
commit99fcd602a82e28e1d6a843e5cbe011b570dc81fa (patch)
tree910b447b760b47e8dbf2b1b44d37e16a9128bcf8
parent356e2720e9030927579024c2f060d665a0b9080f (diff)
downloadgcc-99fcd602a82e28e1d6a843e5cbe011b570dc81fa.zip
gcc-99fcd602a82e28e1d6a843e5cbe011b570dc81fa.tar.gz
gcc-99fcd602a82e28e1d6a843e5cbe011b570dc81fa.tar.bz2
libcody: Do not use a dummy port number in getaddrinfo().
the getaddrinfo() requires either a non-null name for the server or a port service / number. In the code that opens a connection we have been calling this with a dummy port number of "0". Unfortunately this triggers a bug in some BSD versions and OSes importing that code. In this part of the code we do not really need a port number, since it is not reasonable to open a connection to an unspecified host. Setting hints info field to 0, and the servname parm to nullptr works around the BSD bug in this case. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> libcody/ChangeLog: * netclient.cc (OpenInet6): Do not provide a dummy port number in the getaddrinfo() call.
-rw-r--r--libcody/netclient.cc6
1 files changed, 2 insertions, 4 deletions
diff --git a/libcody/netclient.cc b/libcody/netclient.cc
index 7f81dd9..558808b 100644
--- a/libcody/netclient.cc
+++ b/libcody/netclient.cc
@@ -93,7 +93,7 @@ int OpenInet6 (char const **e, char const *name, int port)
}
addrinfo hints;
- hints.ai_flags = AI_NUMERICSERV;
+ hints.ai_flags = 0;
hints.ai_family = AF_INET6;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = 0;
@@ -102,9 +102,7 @@ int OpenInet6 (char const **e, char const *name, int port)
hints.ai_canonname = nullptr;
hints.ai_next = nullptr;
- /* getaddrinfo requires a port number, but is quite happy to accept
- invalid ones. So don't rely on it. */
- if (int err = getaddrinfo (name, "0", &hints, &addrs))
+ if (int err = getaddrinfo (name, nullptr, &hints, &addrs))
{
errstr = gai_strerror (err);
// What's the best errno to set?