diff --git a/deps/picotls b/deps/picotls index 4ab6fda5..bbcdbe6d 160000 --- a/deps/picotls +++ b/deps/picotls @@ -1 +1 @@ -Subproject commit 4ab6fda556e21ef9ab7a51e48347b0289d5d5888 +Subproject commit bbcdbe6dc31ec5d4b72a7beece4daf58098bad42 diff --git a/src/cli.c b/src/cli.c index 5f8b18c9..15ff179c 100644 --- a/src/cli.c +++ b/src/cli.c @@ -511,11 +511,13 @@ static void set_srcaddr(struct msghdr *mess, quicly_address_t *addr) memcpy(CMSG_DATA(cmsg), &info, sizeof(info)); mess->msg_controllen += CMSG_SPACE(sizeof(info)); #elif defined(IP_SENDSRCADDR) + /* TODO FreeBSD: skip setting IP_SENDSRCADDR if the socket is not bound to INADDR_ANY, as doing so results in sendmsg + * generating an error */ cmsg->cmsg_level = IPPROTO_IP; cmsg->cmsg_type = IP_SENDSRCADDR; - cmsg->cmsg_len = CMSG_LEN(sizeof(addr->sin)); - memcpy(CMSG_DATA(cmsg), &addr->sin, sizeof(addr->sin)); - mess->msg_controllen += CMSG_SPACE(sizeof(addr->sin)); + cmsg->cmsg_len = CMSG_LEN(sizeof(addr->sin.sin_addr)); + memcpy(CMSG_DATA(cmsg), &addr->sin.sin_addr, sizeof(addr->sin.sin_addr)); + mess->msg_controllen += CMSG_SPACE(sizeof(addr->sin.sin_addr)); #else assert(!"FIXME"); #endif @@ -534,7 +536,7 @@ static void set_srcaddr(struct msghdr *mess, quicly_address_t *addr) } } -static void set_ecn(struct msghdr *mess, int ecn) +static void set_ecn(struct msghdr *mess, uint8_t ecn) { if (ecn == 0) return; diff --git a/t/cplusplus.t b/t/cplusplus.t index a195da79..70e3423e 100755 --- a/t/cplusplus.t +++ b/t/cplusplus.t @@ -1,4 +1,4 @@ -#! /usr/bin/perl +#! /usr/bin/env perl use strict; use warnings;