- Correctly handle port 0 in getaddrinfo
- Stub numeric port case of getnameinfo

svn path=/trunk/; revision=63632
This commit is contained in:
Thomas Faber 2014-06-22 18:51:11 +00:00
parent 6582b51c46
commit 1fd39b3a08
2 changed files with 14 additions and 2 deletions

View file

@ -1596,6 +1596,7 @@ getaddrinfo(const char FAR * nodename,
struct addrinfo *ret = NULL, *ai;
ULONG addr;
USHORT port;
PCHAR pc;
struct servent *se;
char *proto;
LPPROTOENT pent;
@ -1624,9 +1625,9 @@ getaddrinfo(const char FAR * nodename,
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)

View file

@ -11,6 +11,7 @@
#include "ws2_32.h"
#include <ws2tcpip.h>
#include <strsafe.h>
/*
* @implemented
@ -895,6 +896,16 @@ getnameinfo(const struct sockaddr FAR * sa,
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);