Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 Jan 2020 16:10:50 +0000 (UTC)
From:      Ganael LAPLANCHE <martymac@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-branches@freebsd.org
Subject:   svn commit: r523247 - in branches/2020Q1/ftp/lftp: . files
Message-ID:  <202001161610.00GGAoSh046736@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: martymac
Date: Thu Jan 16 16:10:50 2020
New Revision: 523247
URL: https://svnweb.freebsd.org/changeset/ports/523247

Log:
  MFH: r523101
  
  Fix segmentation fault at startup when IPv6 is enabled
  
  Backport commit 5d34493 from upstream.
  
  PR:		243307
  Submitted by:	Victor Sudakov <vas@sibptus.ru>
  Obtained from:	Github <https://github.com/lavv17/lftp/commit/5d344937d60380341c20409c11f135afb630d7ee>;
  
  Approved by:	portmgr

Added:
  branches/2020Q1/ftp/lftp/files/patch-5d34493.txt
     - copied unchanged from r523101, head/ftp/lftp/files/patch-5d34493.txt
Modified:
  branches/2020Q1/ftp/lftp/Makefile
Directory Properties:
  branches/2020Q1/   (props changed)

Modified: branches/2020Q1/ftp/lftp/Makefile
==============================================================================
--- branches/2020Q1/ftp/lftp/Makefile	Thu Jan 16 15:55:35 2020	(r523246)
+++ branches/2020Q1/ftp/lftp/Makefile	Thu Jan 16 16:10:50 2020	(r523247)
@@ -3,6 +3,7 @@
 
 PORTNAME=	lftp
 PORTVERSION=	4.9.0
+PORTREVISION=	1
 CATEGORIES=	ftp
 MASTER_SITES=	http://lftp.tech/ftp/ \
 		http://lftp.tech/ftp/old/ \

Copied: branches/2020Q1/ftp/lftp/files/patch-5d34493.txt (from r523101, head/ftp/lftp/files/patch-5d34493.txt)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/2020Q1/ftp/lftp/files/patch-5d34493.txt	Thu Jan 16 16:10:50 2020	(r523247, copy of r523101, head/ftp/lftp/files/patch-5d34493.txt)
@@ -0,0 +1,102 @@
+commit 5d344937d60380341c20409c11f135afb630d7ee
+Author: Alexander V. Lukyanov <lavv17f@gmail.com>
+Date:   Sat Jan 11 19:20:46 2020 +0300
+
+    check for ipv6 in resolver to avoid global init order problems (fix #557, fix #562)
+
+diff --git a/src/Resolver.cc b/src/Resolver.cc
+index 0332d5be..4e119966 100644
+--- src/Resolver.cc
++++ src/Resolver.cc
+@@ -355,6 +355,19 @@ int Resolver::FindAddressFamily(const char *name)
+    return -1;
+ }
+ 
++bool Resolver::IsAddressFamilySupporded(int af)
++{
++#if INET6
++   // check if ipv6 is really supported
++   if(af==AF_INET6 && (!FindGlobalIPv6Address() || !CanCreateIpv6Socket()))
++   {
++      LogNote(4, "IPv6 is not supported or configured");
++      return false;
++   }
++#endif // INET6
++   return true;
++}
++
+ void Resolver::ParseOrder(const char *s,int *o)
+ {
+    const char * const delim="\t ";
+@@ -364,7 +377,7 @@ void Resolver::ParseOrder(const char *s,int *o)
+    for(s1=strtok(s1,delim); s1; s1=strtok(0,delim))
+    {
+       int af=FindAddressFamily(s1);
+-      if(af!=-1 && idx<15)
++      if(af!=-1 && idx<15 && IsAddressFamilySupporded(af))
+       {
+ 	 if(o) o[idx]=af;
+ 	 idx++;
+diff --git a/src/Resolver.h b/src/Resolver.h
+index 724714d9..18eeed42 100644
+--- src/Resolver.h
++++ src/Resolver.h
+@@ -26,7 +26,7 @@
+ #include "Cache.h"
+ #include "network.h"
+ 
+-class Resolver : public SMTask, protected ProtoLog
++class Resolver : public SMTask, protected ProtoLog, protected Networker
+ {
+    xstring hostname;
+    xstring portname;
+@@ -53,6 +53,7 @@ class Resolver : public SMTask, protected ProtoLog
+    void	 DoGethostbyname();
+ 
+    static int FindAddressFamily(const char *name);
++   static bool IsAddressFamilySupporded(int af);
+    static void ParseOrder(const char *s,int *o);
+ 
+    void LookupOne(const char *name);
+diff --git a/src/network.cc b/src/network.cc
+index e54076de..ea1b02eb 100644
+--- src/network.cc
++++ src/network.cc
+@@ -454,7 +454,7 @@ const char *Networker::FindGlobalIPv6Address()
+    return 0;
+ }
+ 
+-static bool CanCreateIpv6Socket()
++bool Networker::CanCreateIpv6Socket()
+ {
+ #if INET6
+    bool can=true;
+@@ -472,16 +472,3 @@ static bool CanCreateIpv6Socket()
+    return false;
+ #endif
+ }
+-
+-static struct NetworkInit : private Networker {
+-   NetworkInit();
+-} NETWORK_INIT;
+-
+-NetworkInit::NetworkInit()
+-{
+-#if INET6
+-   // check if ipv6 is really supported
+-   if(!Networker::FindGlobalIPv6Address() || !CanCreateIpv6Socket())
+-      ResMgr::Set("dns:order",0,"inet");
+-#endif // INET6
+-}
+diff --git a/src/network.h b/src/network.h
+index 3223ce82..e4ede6ef 100644
+--- src/network.h
++++ src/network.h
+@@ -140,6 +140,7 @@ protected:
+    static int SocketCreateUnboundTCP(int af,const char *hostname);
+    static void SocketSinglePF(int sock,int pf);
+    static const char *FindGlobalIPv6Address();
++   static bool CanCreateIpv6Socket();
+ };
+ 
+ #endif //NETWORK_H



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