mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-24 00:45:52 +00:00
Fix avahi's use of sendmsg(2) so that it actually works.
This commit is contained in:
parent
76e4b6ff28
commit
475c8049b4
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=160263
@ -7,7 +7,7 @@
|
||||
|
||||
PORTNAME= avahi
|
||||
PORTVERSION= 0.6.9
|
||||
PORTREVISION?= 1
|
||||
PORTREVISION?= 2
|
||||
CATEGORIES= net dns
|
||||
MASTER_SITES= http://www.avahi.org/download/
|
||||
|
||||
|
76
net/avahi/files/patch-avahi-core_socket.c
Normal file
76
net/avahi/files/patch-avahi-core_socket.c
Normal file
@ -0,0 +1,76 @@
|
||||
--- avahi-core/socket.c.orig Sun Apr 23 19:20:31 2006
|
||||
+++ avahi-core/socket.c Sun Apr 23 20:16:46 2006
|
||||
@@ -468,7 +468,7 @@ int avahi_send_dns_packet_ipv4(int fd, A
|
||||
size_t cmsg_data[( CMSG_SPACE(sizeof(struct in_pktinfo)) / sizeof(size_t)) + 1];
|
||||
#elif defined(IP_SENDSRCADDR)
|
||||
struct cmsghdr *cmsg;
|
||||
- size_t cmsg_data[( CMSG_SPACE(sizeof(struct in_addr)) / sizeof(size_t)) + 1];
|
||||
+ char cmsg_data[CMSG_SPACE(sizeof(struct in_addr))];
|
||||
#endif
|
||||
|
||||
assert(fd >= 0);
|
||||
@@ -491,8 +491,8 @@ int avahi_send_dns_packet_ipv4(int fd, A
|
||||
msg.msg_iov = &io;
|
||||
msg.msg_iovlen = 1;
|
||||
msg.msg_flags = 0;
|
||||
- msg.msg_control = NULL;
|
||||
- msg.msg_controllen = 0;
|
||||
+ msg.msg_control = cmsg_data;
|
||||
+ msg.msg_controllen = sizeof(cmsg_data);
|
||||
|
||||
#ifdef IP_PKTINFO
|
||||
if (interface > 0 || src_address) {
|
||||
@@ -518,18 +518,15 @@ int avahi_send_dns_packet_ipv4(int fd, A
|
||||
#elif defined(IP_SENDSRCADDR)
|
||||
if (src_address) {
|
||||
struct in_addr *addr;
|
||||
+
|
||||
+ cmsg = CMSG_FIRSTHDR(&msg);
|
||||
|
||||
- memset(cmsg_data, 0, sizeof(cmsg_data));
|
||||
- cmsg = (struct cmsghdr*) cmsg_data;
|
||||
- cmsg->cmsg_len = CMSG_LEN(sizeof(struct in_addr));
|
||||
cmsg->cmsg_level = IPPROTO_IP;
|
||||
cmsg->cmsg_type = IP_SENDSRCADDR;
|
||||
+ cmsg->cmsg_len = CMSG_LEN(sizeof(struct in_addr));
|
||||
|
||||
addr = (struct in_addr *)CMSG_DATA(cmsg);
|
||||
addr->s_addr = src_address->address;
|
||||
-
|
||||
- msg.msg_control = cmsg_data;
|
||||
- msg.msg_controllen = sizeof(cmsg_data);
|
||||
}
|
||||
#elif defined(IP_MULTICAST_IF)
|
||||
{
|
||||
@@ -551,7 +548,7 @@ int avahi_send_dns_packet_ipv6(int fd, A
|
||||
struct msghdr msg;
|
||||
struct iovec io;
|
||||
struct cmsghdr *cmsg;
|
||||
- size_t cmsg_data[(CMSG_SPACE(sizeof(struct in6_pktinfo))/sizeof(size_t)) + 1];
|
||||
+ char cmsg_data[CMSG_SPACE(sizeof(struct in6_pktinfo))];
|
||||
|
||||
assert(fd >= 0);
|
||||
assert(p);
|
||||
@@ -576,9 +573,11 @@ int avahi_send_dns_packet_ipv6(int fd, A
|
||||
|
||||
if (interface > 0 || src_address) {
|
||||
struct in6_pktinfo *pkti;
|
||||
+
|
||||
+ msg.msg_control = cmsg_data;
|
||||
+ msg.msg_controllen = sizeof(cmsg_data);
|
||||
+ cmsg = CMSG_FIRSTHDR(&msg);
|
||||
|
||||
- memset(cmsg_data, 0, sizeof(cmsg_data));
|
||||
- cmsg = (struct cmsghdr*) cmsg_data;
|
||||
cmsg->cmsg_len = CMSG_LEN(sizeof(struct in6_pktinfo));
|
||||
cmsg->cmsg_level = IPPROTO_IPV6;
|
||||
cmsg->cmsg_type = IPV6_PKTINFO;
|
||||
@@ -591,8 +590,6 @@ int avahi_send_dns_packet_ipv6(int fd, A
|
||||
if (src_address)
|
||||
memcpy(&pkti->ipi6_addr, src_address->address, sizeof(src_address->address));
|
||||
|
||||
- msg.msg_control = cmsg_data;
|
||||
- msg.msg_controllen = sizeof(cmsg_data);
|
||||
} else {
|
||||
msg.msg_control = NULL;
|
||||
msg.msg_controllen = 0;
|
Loading…
Reference in New Issue
Block a user