Skip to content

Commit

Permalink
fixup: use sockaddr_storage
Browse files Browse the repository at this point in the history
  • Loading branch information
santigimeno committed Mar 12, 2019
1 parent 43e93bc commit ad4601e
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 32 deletions.
37 changes: 21 additions & 16 deletions src/unix/udp.c
Original file line number Diff line number Diff line change
Expand Up @@ -762,35 +762,40 @@ int uv_udp_set_source_membership(uv_udp_t* handle,
const char* source_addr,
uv_membership membership) {
int err;
union sockaddr {
struct sockaddr_in sa_in;
struct sockaddr_in6 sa_in6;
};

union sockaddr mcast_addr;
union sockaddr src_addr;

err = uv_ip4_addr(multicast_addr, 0, &mcast_addr.sa_in);
struct sockaddr_storage mcast_addr;
struct sockaddr_in* mcast_addr4;
struct sockaddr_in6* mcast_addr6;
struct sockaddr_storage src_addr;
struct sockaddr_in* src_addr4;
struct sockaddr_in6* src_addr6;

mcast_addr4 = (struct sockaddr_in*)&mcast_addr;
mcast_addr6 = (struct sockaddr_in6*)&mcast_addr;
src_addr4 = (struct sockaddr_in*)&src_addr;
src_addr6 = (struct sockaddr_in6*)&src_addr;

err = uv_ip4_addr(multicast_addr, 0, mcast_addr4);
if (err) {
err = uv_ip6_addr(multicast_addr, 0, &mcast_addr.sa_in6);
err = uv_ip6_addr(multicast_addr, 0, mcast_addr6);
if (err)
return err;
err = uv_ip6_addr(source_addr, 0, &src_addr.sa_in6);
err = uv_ip6_addr(source_addr, 0, src_addr6);
if (err)
return err;
return uv__udp_set_source_membership6(handle,
&mcast_addr.sa_in6,
mcast_addr6,
interface_addr,
&src_addr.sa_in6,
src_addr6,
membership);
}
err = uv_ip4_addr(source_addr, 0, &src_addr.sa_in);

err = uv_ip4_addr(source_addr, 0, src_addr4);
if (err)
return err;
return uv__udp_set_source_membership4(handle,
&mcast_addr.sa_in,
mcast_addr4,
interface_addr,
&src_addr.sa_in,
src_addr4,
membership);
}

Expand Down
37 changes: 21 additions & 16 deletions src/win/udp.c
Original file line number Diff line number Diff line change
Expand Up @@ -825,35 +825,40 @@ int uv_udp_set_source_membership(uv_udp_t* handle,
const char* source_addr,
uv_membership membership) {
int err;
union sockaddr {
struct sockaddr_in sa_in;
struct sockaddr_in6 sa_in6;
};

union sockaddr mcast_addr;
union sockaddr src_addr;

err = uv_ip4_addr(multicast_addr, 0, &mcast_addr.sa_in);
struct sockaddr_storage mcast_addr;
struct sockaddr_in* mcast_addr4;
struct sockaddr_in6* mcast_addr6;
struct sockaddr_storage src_addr;
struct sockaddr_in* src_addr4;
struct sockaddr_in6* src_addr6;

mcast_addr4 = (struct sockaddr_in*)&mcast_addr;
mcast_addr6 = (struct sockaddr_in6*)&mcast_addr;
src_addr4 = (struct sockaddr_in*)&src_addr;
src_addr6 = (struct sockaddr_in6*)&src_addr;

err = uv_ip4_addr(multicast_addr, 0, mcast_addr4);
if (err) {
err = uv_ip6_addr(multicast_addr, 0, &mcast_addr.sa_in6);
err = uv_ip6_addr(multicast_addr, 0, mcast_addr6);
if (err)
return err;
err = uv_ip6_addr(source_addr, 0, &src_addr.sa_in6);
err = uv_ip6_addr(source_addr, 0, src_addr6);
if (err)
return err;
return uv__udp_set_source_membership6(handle,
&mcast_addr.sa_in6,
mcast_addr6,
interface_addr,
&src_addr.sa_in6,
src_addr6,
membership);
}
err = uv_ip4_addr(source_addr, 0, &src_addr.sa_in);

err = uv_ip4_addr(source_addr, 0, src_addr4);
if (err)
return err;
return uv__udp_set_source_membership4(handle,
&mcast_addr.sa_in,
mcast_addr4,
interface_addr,
&src_addr.sa_in,
src_addr4,
membership);
}

Expand Down

0 comments on commit ad4601e

Please sign in to comment.