Author: tfaber
Date: Sun Jun 22 18:51:11 2014
New Revision: 63632

URL: http://svn.reactos.org/svn/reactos?rev=63632&view=rev
Log:
[WS2_32]
- Correctly handle port 0 in getaddrinfo
- Stub numeric port case of getnameinfo

Modified:
    trunk/reactos/dll/win32/ws2_32/misc/ns.c
    trunk/reactos/dll/win32/ws2_32/misc/stubs.c

Modified: trunk/reactos/dll/win32/ws2_32/misc/ns.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ws2_32/misc/ns.c?rev=63632&r1=63631&r2=63632&view=diff
==============================================================================
--- trunk/reactos/dll/win32/ws2_32/misc/ns.c    [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/ws2_32/misc/ns.c    [iso-8859-1] Sun Jun 22 
18:51:11 2014
@@ -1596,6 +1596,7 @@
     struct addrinfo *ret = NULL, *ai;
     ULONG addr;
     USHORT port;
+    PCHAR pc;
     struct servent *se;
     char *proto;
     LPPROTOENT pent;
@@ -1624,9 +1625,9 @@
     if (servname)
     {
         /* converting port number */
-        port = strtoul(servname, NULL, 10);
+        port = strtoul(servname, &pc, 10);
         /* service name was specified? */
-        if (port == 0)
+        if (*pc != ANSI_NULL)
         {
             /* protocol was specified? */
             if (hints && hints->ai_protocol)

Modified: trunk/reactos/dll/win32/ws2_32/misc/stubs.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ws2_32/misc/stubs.c?rev=63632&r1=63631&r2=63632&view=diff
==============================================================================
--- trunk/reactos/dll/win32/ws2_32/misc/stubs.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/ws2_32/misc/stubs.c [iso-8859-1] Sun Jun 22 
18:51:11 2014
@@ -11,6 +11,7 @@
 #include "ws2_32.h"
 
 #include <ws2tcpip.h>
+#include <strsafe.h>
 
 /*
  * @implemented
@@ -895,6 +896,16 @@
             DWORD           servlen,
             INT             flags)
 {
+    if (!host && serv && flags & NI_NUMERICSERV)
+    {
+        const struct sockaddr_in *sa_in = (const struct sockaddr_in *)sa;
+        if (salen >= sizeof(*sa_in) && sa->sa_family == AF_INET)
+        {
+            StringCbPrintfA(serv, servlen, "%u", sa_in->sin_port);
+            return 0;
+        }
+    }
+
     UNIMPLEMENTED
 
     WSASetLastError(WSASYSCALLFAILURE);


Reply via email to