aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOuyang Yadong <oyydoibh@gmail.com>2019-09-27 11:51:40 +0800
committerSaúl Ibarra Corretgé <s@saghul.net>2019-10-04 23:58:18 +0200
commit645be48a804e1538d6058fa147d8786c49baf94b (patch)
tree16310b39b7336e6073ca0bbf03a41c1f4aaa84dd /src
parent0ff717e39c8e82d68fb170b7afed32e843bf1740 (diff)
downloadlibuv-645be48a804e1538d6058fa147d8786c49baf94b.tar.gz
libuv-645be48a804e1538d6058fa147d8786c49baf94b.zip
unix: set sin_len and sin6_len
FreeBSD defines `sin_len` and `sin6_len` inside `sockaddr_in` and `sockaddr_in6`. `sockaddr`s come from `getsockname` and `uv_ip4_addr` will differ in the first byte if libuv doesn't set `sin_len` correctly. PR-URL: https://github.com/libuv/libuv/pull/2492 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com> Reviewed-By: Saúl Ibarra Corretgé <s@saghul.net>
Diffstat (limited to 'src')
-rw-r--r--src/uv-common.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/uv-common.c b/src/uv-common.c
index 70db53ab..cec4ac62 100644
--- a/src/uv-common.c
+++ b/src/uv-common.c
@@ -211,6 +211,9 @@ int uv_ip4_addr(const char* ip, int port, struct sockaddr_in* addr) {
memset(addr, 0, sizeof(*addr));
addr->sin_family = AF_INET;
addr->sin_port = htons(port);
+#ifdef SIN6_LEN
+ addr->sin_len = sizeof(*addr);
+#endif
return uv_inet_pton(AF_INET, ip, &(addr->sin_addr.s_addr));
}