From: Ralf Habacker Date: Wed, 4 Feb 2015 13:56:17 +0000 (+0100) Subject: _dbus_listen_tcp_socket: Keep windows code to fetch port from tcp listening socket... X-Git-Tag: dbus-1.9.10~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e6bece44989f90eb55cbeface2845e1ea0ebc26a;p=thirdparty%2Fdbus.git _dbus_listen_tcp_socket: Keep windows code to fetch port from tcp listening socket in sync with unix. Bug: https://bugs.freedesktop.org/show_bug.cgi?id=87999 Reviewed-by: Simon McVittie --- diff --git a/dbus/dbus-sysdeps-win.c b/dbus/dbus-sysdeps-win.c index 68fa72b06..dbd9043d0 100644 --- a/dbus/dbus-sysdeps-win.c +++ b/dbus/dbus-sysdeps-win.c @@ -1763,9 +1763,12 @@ _dbus_listen_tcp_socket (const char *host, { mysockaddr_gen addr; socklen_t addrlen = sizeof(addr); - char portbuf[10]; + char portbuf[NI_MAXSERV]; - if (getsockname(fd, &addr.Address, &addrlen) == SOCKET_ERROR) + if (getsockname(fd, &addr.Address, &addrlen) == SOCKET_ERROR || + (res = getnameinfo (&addr.Address, addrlen, NULL, 0, + portbuf, sizeof(portbuf), + NI_NUMERICSERV)) != 0) { DBUS_SOCKET_SET_ERRNO (); dbus_set_error (error, _dbus_error_from_errno (errno), @@ -1773,10 +1776,6 @@ _dbus_listen_tcp_socket (const char *host, host ? host : "*", port, _dbus_strerror_from_errno()); goto failed; } - if (addr.AddressIn.sin_family = AF_INET) - snprintf( portbuf, sizeof( portbuf ) - 1, "%d", ntohs(addr.AddressIn.sin_port) ); - else - snprintf( portbuf, sizeof( portbuf ) - 1, "%d", ntohs(addr.AddressIn6.sin6_port) ); if (!_dbus_string_append(retport, portbuf)) { dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL);