Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 22 Feb 2016 02:40:50 +0000 (UTC)
From:      "Vanilla I. Shu" <vanilla@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r409315 - in head/astro/xtide: . files
Message-ID:  <201602220240.u1M2eoj6074572@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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@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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201602220240.u1M2eoj6074572>