- handle servname being NULL

- patch by Yuri Sidorov <jura at cp-lab dot com>
See issue #3627 for more details.

svn path=/trunk/; revision=35111
This commit is contained in:
Ged Murphy 2008-08-04 17:26:03 +00:00
parent f143cab0bb
commit 40d661edfb

View file

@ -1407,28 +1407,33 @@ getaddrinfo(const char FAR * nodename,
if (!WSAINITIALIZED)
return WSANOTINITIALISED;
/* converting port number */
port = strtoul(servname, NULL, 10);
/* service name was specified? */
if (port == 0)
if (servname)
{
/* protocol was specified? */
if (hints && hints->ai_protocol)
/* converting port number */
port = strtoul(servname, NULL, 10);
/* service name was specified? */
if (port == 0)
{
pent = getprotobynumber(hints->ai_protocol);
if (pent == NULL)
return WSAEINVAL;
proto = pent->p_name;
/* protocol was specified? */
if (hints && hints->ai_protocol)
{
pent = getprotobynumber(hints->ai_protocol);
if (pent == NULL)
return WSAEINVAL;
proto = pent->p_name;
}
else
proto = NULL;
se = getservbyname(servname, proto);
if (se == NULL)
return WSATYPE_NOT_FOUND;
port = se->s_port;
}
else
proto = NULL;
se = getservbyname(servname, proto);
if (se == NULL)
return WSAHOST_NOT_FOUND;
port = se->s_port;
port = htons(port);
}
else
port = htons(port);
port = 0;
if (nodename)
{