]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
_dbus_listen_tcp_socket: Keep windows code to fetch port from tcp listening socket...
authorRalf Habacker <ralf.habacker@freenet.de>
Wed, 4 Feb 2015 13:56:17 +0000 (14:56 +0100)
committerRalf Habacker <ralf.habacker@freenet.de>
Wed, 4 Feb 2015 18:30:38 +0000 (19:30 +0100)
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=87999
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
dbus/dbus-sysdeps-win.c

index 68fa72b0676e2515d82f21d19c5be398e8044187..dbd9043d06d5e95c1259f5fba4bc34dce2a084d1 100644 (file)
@@ -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);