openbsd-ports/net/avahi/patches/patch-avahi-core_socket_c

28 lines
972 B
Plaintext

Unbreak IPv6: sendmsg() to 0:0:ff02:: failed: Invalid argument
Index: avahi-core/socket.c
--- avahi-core/socket.c.orig
+++ avahi-core/socket.c
@@ -583,7 +583,7 @@ int avahi_send_dns_packet_ipv6(
struct msghdr msg;
struct iovec io;
struct cmsghdr *cmsg;
- size_t cmsg_data[(CMSG_SPACE(sizeof(struct in6_pktinfo))/sizeof(size_t)) + 1];
+ u_char cmsg_data[CMSG_SPACE(sizeof(struct in6_pktinfo))];
assert(fd >= 0);
assert(p);
@@ -611,10 +611,10 @@ int avahi_send_dns_packet_ipv6(
memset(cmsg_data, 0, sizeof(cmsg_data));
msg.msg_control = cmsg_data;
- msg.msg_controllen = CMSG_LEN(sizeof(struct in6_pktinfo));
+ msg.msg_controllen = CMSG_SPACE(sizeof(struct in6_pktinfo));
cmsg = CMSG_FIRSTHDR(&msg);
- cmsg->cmsg_len = msg.msg_controllen;
+ cmsg->cmsg_len = CMSG_LEN(sizeof(struct in6_pktinfo));
cmsg->cmsg_level = IPPROTO_IPV6;
cmsg->cmsg_type = IPV6_PKTINFO;