xtide 2.15 on FreeBSD-current amd64

Manfred Antar null at pozo.com
Mon Feb 22 01:59:38 UTC 2016


> On Feb 21, 2016, at 5:24 PM, David Flater <dave at flaterco.com> wrote:
> 
> On 02/21/2016 11:58 AM, Manfred Antar wrote:
>> Same error in syslog CANT_GET_SOCKET.
> 
> Please test this patch against the xttpd of xtide-2.15.
> 
> DWF
> 
> Index: xttpd.cc
> ===================================================================
> --- xttpd.cc    (revision 6265)
> +++ xttpd.cc    (working copy)
> @@ -258,7 +258,21 @@
>       Global::xperror ("setsockopt");
>     }
>   }
> -  bool bound = (bind(s,(sockaddr *)&addr,sizeof(addr))==0);
> +
> +  // 2016-02-21  Manfred Antar reported "bind: Invalid argument" occurring on
> +  // FreeBSD and OS X as a regression from 2.14 when trying to bind port
> +  // 8080, with or without an explicit address.  The only change that should
> +  // have been visible to bind is that the size argument got bigger.  The
> +  // FreeBSD man page for bind states that EINVAL can be raised if "the
> +  // addrlen argument is not a valid length for the address family."  I guess
> +  // this means that apps making use of sockaddr_storage are supposed to lie
> +  // about the length.  The linux man page similarly states that EINVAL can
> +  // be raised if "the addrlen is wrong" but the problem does not reproduce
> +  // with my libc.
> +  const socklen_t addrlen (addr.ss_family==AF_INET6 ? sizeof(sockaddr_in6)
> +                                                    : sizeof(sockaddr_in));
> +
> +  bool bound = (bind(s,(sockaddr *)&addr,addrlen)==0);
>   int yerrno = errno;
>   if (!bound && addr.ss_family == AF_INET6) {
> 
> @@ -288,7 +302,7 @@
> 
>     for (unsigned magic=4; !bound && magic>0; --magic) {
>       ((sockaddr_in6 *)&addr)->sin6_scope_id = magic;
> -      bound = (bind(s,(sockaddr *)&addr,sizeof(addr))==0);
> +      bound = (bind(s,(sockaddr *)&addr,addrlen)==0);
>     }
>   }
>   // Report the error from the first failure so that it won't be obscured by

That works here on FreeBSD-current amd64
and also on OS X El Capitan.
Thanks !!!!!!






More information about the freebsd-ports mailing list