svn commit: r409315 - in head/astro/xtide: . files
Vanilla I. Shu
vanilla at FreeBSD.org
Mon Feb 22 02:40:51 UTC 2016
Author: vanilla
Date: Mon Feb 22 02:40:49 2016
New Revision: 409315
URL: https://svnweb.freebsd.org/changeset/ports/409315
Log:
1: Add a patch from upstream to fix bind issue.
2: Bump version.
Obtained from: Manfred Antar <null at pozo.com>
Added:
head/astro/xtide/files/
head/astro/xtide/files/patch-xttpd.cc (contents, props changed)
Modified:
head/astro/xtide/Makefile
Modified: head/astro/xtide/Makefile
==============================================================================
--- head/astro/xtide/Makefile Mon Feb 22 01:59:42 2016 (r409314)
+++ head/astro/xtide/Makefile Mon Feb 22 02:40:49 2016 (r409315)
@@ -3,6 +3,7 @@
PORTNAME= xtide
PORTVERSION= 2.15
+PORTREVISION= 1
CATEGORIES= astro geography
MASTER_SITES= ftp://ftp.flaterco.com/xtide/
DISTFILES= ${DISTNAME}${EXTRACT_SUFX} \
Added: head/astro/xtide/files/patch-xttpd.cc
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/astro/xtide/files/patch-xttpd.cc Mon Feb 22 02:40:49 2016 (r409315)
@@ -0,0 +1,34 @@
+--- xttpd.cc.orig 2016-01-23 13:26:42 UTC
++++ xttpd.cc
+@@ -258,7 +258,21 @@ static void setupSocket (sockaddr_storag
+ 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 @@ static void setupSocket (sockaddr_storag
+
+ 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
More information about the svn-ports-all
mailing list