(inet_ntop) [_WIN32]: Improve the error checking for getnameinfo().
This commit is contained in:
parent
5299580260
commit
2abd68e46e
2 changed files with 28 additions and 22 deletions
|
@ -322,31 +322,36 @@ posix_socket(int domain, int type, int protocol)
|
||||||
|
|
||||||
#ifdef HAVE_GETADDRINFO
|
#ifdef HAVE_GETADDRINFO
|
||||||
const char *
|
const char *
|
||||||
inet_ntop(int af, const void *source, char *dest, socklen_t len)
|
inet_ntop(int af, const void *src, char *dst, socklen_t len)
|
||||||
{
|
{
|
||||||
if (af == AF_INET)
|
struct sockaddr *sa;
|
||||||
{
|
struct sockaddr_in sin;
|
||||||
struct sockaddr_in in;
|
struct sockaddr_in6 sin6;
|
||||||
memset(&in, 0, sizeof(in));
|
size_t salen;
|
||||||
in.sin_family = AF_INET;
|
|
||||||
memcpy(&in.sin_addr, source, sizeof(struct in_addr));
|
if (af == AF_INET) {
|
||||||
getnameinfo((struct sockaddr *)&in,
|
memset(&sin, 0, sizeof(sin));
|
||||||
sizeof(struct sockaddr_in), dest, len,
|
sin.sin_family = af;
|
||||||
NULL, 0, NI_NUMERICHOST);
|
memcpy(&sin.sin_addr, src, sizeof(sin.sin_addr));
|
||||||
return dest;
|
sa = (struct sockaddr *)&sin;
|
||||||
}
|
salen = sizeof(sin);
|
||||||
else if (af == AF_INET6)
|
} else if (af == AF_INET6) {
|
||||||
{
|
memset(&sin6, 0, sizeof(sin6));
|
||||||
struct sockaddr_in6 in;
|
sin6.sin6_family = af;
|
||||||
memset(&in, 0, sizeof(in));
|
memcpy(&sin6.sin6_addr, src, sizeof(sin6.sin6_addr));
|
||||||
in.sin6_family = AF_INET6;
|
sa = (struct sockaddr *)&sin6;
|
||||||
memcpy(&in.sin6_addr, source, sizeof(struct in_addr6));
|
salen = sizeof(sin6);
|
||||||
getnameinfo((struct sockaddr *)&in,
|
} else {
|
||||||
sizeof(struct sockaddr_in6), dest, len,
|
errno = EAFNOSUPPORT;
|
||||||
NULL, 0, NI_NUMERICHOST);
|
|
||||||
return dest;
|
|
||||||
}
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getnameinfo(sa, salen, dst, len, NULL, 0, NI_NUMERICHOST)) {
|
||||||
|
errno = EAFNOSUPPORT;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dst;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -118,6 +118,7 @@ typedef int socklen_t;
|
||||||
#define F_SETLK 3
|
#define F_SETLK 3
|
||||||
#define EWOULDBLOCK WSAEWOULDBLOCK
|
#define EWOULDBLOCK WSAEWOULDBLOCK
|
||||||
#define ENOTSOCK WSAENOTSOCK
|
#define ENOTSOCK WSAENOTSOCK
|
||||||
|
#define EAFNOSUPPORT WSAEAFNOSUPPORT
|
||||||
|
|
||||||
struct flock
|
struct flock
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue