summaryrefslogtreecommitdiff
path: root/deps/uv/src/unix/udp.c
diff options
context:
space:
mode:
Diffstat (limited to 'deps/uv/src/unix/udp.c')
-rw-r--r--deps/uv/src/unix/udp.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/deps/uv/src/unix/udp.c b/deps/uv/src/unix/udp.c
index dba8eff838..98215f7e1d 100644
--- a/deps/uv/src/unix/udp.c
+++ b/deps/uv/src/unix/udp.c
@@ -165,9 +165,6 @@ static void uv__udp_recvmsg(uv_udp_t* handle) {
*/
count = 32;
- memset(&h, 0, sizeof(h));
- h.msg_name = &peer;
-
do {
buf = uv_buf_init(NULL, 0);
handle->alloc_cb((uv_handle_t*) handle, 64 * 1024, &buf);
@@ -177,6 +174,9 @@ static void uv__udp_recvmsg(uv_udp_t* handle) {
}
assert(buf.base != NULL);
+ memset(&h, 0, sizeof(h));
+ memset(&peer, 0, sizeof(peer));
+ h.msg_name = &peer;
h.msg_namelen = sizeof(peer);
h.msg_iov = (void*) &buf;
h.msg_iovlen = 1;
@@ -193,17 +193,11 @@ static void uv__udp_recvmsg(uv_udp_t* handle) {
handle->recv_cb(handle, UV__ERR(errno), &buf, NULL, 0);
}
else {
- const struct sockaddr *addr;
- if (h.msg_namelen == 0)
- addr = NULL;
- else
- addr = (const struct sockaddr*) &peer;
-
flags = 0;
if (h.msg_flags & MSG_TRUNC)
flags |= UV_UDP_PARTIAL;
- handle->recv_cb(handle, nread, &buf, addr, flags);
+ handle->recv_cb(handle, nread, &buf, (const struct sockaddr*) &peer, flags);
}
}
/* recv_cb callback may decide to pause or close the handle */
@@ -659,6 +653,7 @@ static int uv__udp_set_membership6(uv_udp_t* handle,
}
+#if !defined(__OpenBSD__) && !defined(__NetBSD__)
static int uv__udp_set_source_membership4(uv_udp_t* handle,
const struct sockaddr_in* multicast_addr,
const char* interface_addr,
@@ -749,6 +744,7 @@ static int uv__udp_set_source_membership6(uv_udp_t* handle,
return 0;
}
+#endif
int uv_udp_init_ex(uv_loop_t* loop, uv_udp_t* handle, unsigned int flags) {
@@ -846,6 +842,7 @@ int uv_udp_set_source_membership(uv_udp_t* handle,
const char* interface_addr,
const char* source_addr,
uv_membership membership) {
+#if !defined(__OpenBSD__) && !defined(__NetBSD__)
int err;
struct sockaddr_storage mcast_addr;
struct sockaddr_in* mcast_addr4;
@@ -873,7 +870,7 @@ int uv_udp_set_source_membership(uv_udp_t* handle,
src_addr6,
membership);
}
-
+
err = uv_ip4_addr(source_addr, 0, src_addr4);
if (err)
return err;
@@ -882,6 +879,9 @@ int uv_udp_set_source_membership(uv_udp_t* handle,
interface_addr,
src_addr4,
membership);
+#else
+ return UV_ENOSYS;
+#endif
}