diff --git a/src/core/ddsi/src/ddsi_udp.c b/src/core/ddsi/src/ddsi_udp.c index 8deab4b..3a5f507 100644 --- a/src/core/ddsi/src/ddsi_udp.c +++ b/src/core/ddsi/src/ddsi_udp.c @@ -59,12 +59,17 @@ static ssize_t ddsi_udp_conn_read (ddsi_tran_conn_t conn, unsigned char * buf, s msg_iov.iov_base = (void*) buf; msg_iov.iov_len = (ddsi_iov_len_t)len; /* windows uses unsigned, POISX size_t */ - memset (&msghdr, 0, sizeof (msghdr)); - msghdr.msg_name = &src; msghdr.msg_namelen = srclen; msghdr.msg_iov = &msg_iov; msghdr.msg_iovlen = 1; +#if !defined(__sun) || defined(_XPG4_2) + msghdr.msg_control = NULL; + msghdr.msg_controllen = 0; +#else + msghdr.msg_accrights = NULL; + msghdr.msg_accrightslen = 0; +#endif do { ret = recvmsg(((ddsi_udp_conn_t) conn)->m_sock, &msghdr, 0); @@ -113,10 +118,16 @@ static ssize_t ddsi_udp_conn_write (ddsi_tran_conn_t conn, const nn_locator_t *d os_sockaddr_storage dstaddr; assert(niov <= INT_MAX); ddsi_ipaddr_from_loc(&dstaddr, dst); - memset(&msg, 0, sizeof(msg)); set_msghdr_iov (&msg, (ddsi_iovec_t *) iov, niov); msg.msg_name = &dstaddr; msg.msg_namelen = (socklen_t) os_sockaddrSizeof((os_sockaddr *) &dstaddr); +#if !defined(__sun) || defined(_XPG4_2) + msg.msg_control = NULL; + msg.msg_controllen = 0; +#else + msg.msg_accrights = NULL; + msg.msg_accrightslen = 0; +#endif #if SYSDEPS_MSGHDR_FLAGS msg.msg_flags = (int) flags; #endif