diff options
Diffstat (limited to 'src/inet.c')
-rw-r--r-- | src/inet.c | 9 |
1 files changed, 4 insertions, 5 deletions
@@ -559,12 +559,11 @@ const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt) | |||
559 | int inet_pton(int af, const char *src, void *dst) | 559 | int 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 |