diff options
| author | unknown <diego.nehab@gmail.com> | 2013-05-28 17:27:06 +0800 |
|---|---|---|
| committer | unknown <diego.nehab@gmail.com> | 2013-05-28 17:27:06 +0800 |
| commit | 2d51d6168874cdb2b72ee4f56f414d9a9a9d92e5 (patch) | |
| tree | 788c50ccb42bd982531c62e6ede21f57655889f9 /src/inet.c | |
| parent | 27fd725c6d697b2e284b830ba989be2431147485 (diff) | |
| download | luasocket-2d51d6168874cdb2b72ee4f56f414d9a9a9d92e5.tar.gz luasocket-2d51d6168874cdb2b72ee4f56f414d9a9a9d92e5.tar.bz2 luasocket-2d51d6168874cdb2b72ee4f56f414d9a9a9d92e5.zip | |
Fix "final" bug in pton and TCP connreset handling
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 |
