aboutsummaryrefslogtreecommitdiff
path: root/src/inet.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/inet.c')
-rw-r--r--src/inet.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/inet.c b/src/inet.c
index 1f55d2a..1c44464 100644
--- a/src/inet.c
+++ b/src/inet.c
@@ -559,12 +559,11 @@ const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt)
559int inet_pton(int af, const char *src, void *dst) 559int inet_pton(int af, const char *src, void *dst)
560{ 560{
561 struct addrinfo hints, *res; 561 struct addrinfo hints, *res;
562 int ret = 1;
562 memset(&hints, 0, sizeof(struct addrinfo)); 563 memset(&hints, 0, sizeof(struct addrinfo));
563 hints.ai_family = af; 564 hints.ai_family = af;
564 hints.ai_flags = AI_NUMERICHOST; 565 hints.ai_flags = AI_NUMERICHOST;
565 if (getaddrinfo(src, NULL, &hints, &res) != 0) { 566 if (getaddrinfo(src, NULL, &hints, &res) != 0) return -1;
566 return -1;
567 }
568 if (af == AF_INET) { 567 if (af == AF_INET) {
569 struct sockaddr_in *in = (struct sockaddr_in *) res->ai_addr; 568 struct sockaddr_in *in = (struct sockaddr_in *) res->ai_addr;
570 memcpy(dst, &in->sin_addr, sizeof(in->sin_addr)); 569 memcpy(dst, &in->sin_addr, sizeof(in->sin_addr));
@@ -572,10 +571,10 @@ int inet_pton(int af, const char *src, void *dst)
572 struct sockaddr_in6 *in = (struct sockaddr_in6 *) res->ai_addr; 571 struct sockaddr_in6 *in = (struct sockaddr_in6 *) res->ai_addr;
573 memcpy(dst, &in->sin6_addr, sizeof(in->sin6_addr)); 572 memcpy(dst, &in->sin6_addr, sizeof(in->sin6_addr));
574 } else { 573 } else {
575 return -1; 574 ret = -1;
576 } 575 }
577 freeaddrinfo(res); 576 freeaddrinfo(res);
578 return 0; 577 return ret;
579} 578}
580 579
581#endif 580#endif