Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 8 Nov 2018 22:52:54 +0000 (UTC)
From:      "Danilo G. Baio" <dbaio@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r484484 - in head/net-p2p: libtorrent libtorrent/files rtorrent rtorrent/files
Message-ID:  <201811082252.wA8MqsgH024021@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dbaio
Date: Thu Nov  8 22:52:54 2018
New Revision: 484484
URL: https://svnweb.freebsd.org/changeset/ports/484484

Log:
  net-p2p/[libtorrent|rtorrent]: Fix incoming connections
  
  Remove unused patches.
  
  While here, fix build with OpenSSL 1.1.x
  
  PR:		231274
  Submitted by:	Henry David Bartholomew <PopularMoment@protonmail.com>
  MFH:		2018Q4

Added:
  head/net-p2p/libtorrent/files/patch-openssl-1.1.x   (contents, props changed)
  head/net-p2p/libtorrent/files/patch-socket-issue   (contents, props changed)
Deleted:
  head/net-p2p/rtorrent/files/extra-clang
Modified:
  head/net-p2p/libtorrent/Makefile
  head/net-p2p/libtorrent/pkg-plist
  head/net-p2p/rtorrent/Makefile

Modified: head/net-p2p/libtorrent/Makefile
==============================================================================
--- head/net-p2p/libtorrent/Makefile	Thu Nov  8 22:41:49 2018	(r484483)
+++ head/net-p2p/libtorrent/Makefile	Thu Nov  8 22:52:54 2018	(r484484)
@@ -2,7 +2,7 @@
 
 PORTNAME=	libtorrent
 PORTVERSION=	0.13.7
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	net-p2p
 MASTER_SITES=	https://rtorrent.net/downloads/
 
@@ -14,7 +14,7 @@ LICENSE_FILE=	${WRKSRC}/COPYING
 
 BROKEN_SSL=	openssl-devel
 
-USES=		autoreconf:build compiler:c++11-lang libtool pathfix pkgconfig ssl
+USES=		autoreconf compiler:c++11-lang libtool pathfix pkgconfig ssl
 GNU_CONFIGURE=	yes
 CONFIGURE_ARGS=	--disable-debug
 CONFIGURE_ENV=	OPENSSL_LIBS="-L${OPENSSLLIB} -lcrypto" OPENSSL_CFLAGS="-I\
@@ -39,18 +39,6 @@ KQUEUE_CONFIGURE_WITH=	kqueue
 # /usr/local/lib/libtorrent.so: undefined reference to `__sync_fetch_and_and_8'
 .if ${ARCH} == i386 && ${CHOSEN_COMPILER_TYPE} == gcc || ${ARCH} == powerpc
 CONFIGURE_ARGS+=--disable-instrumentation
-.endif
-
-post-patch:
-.if ${OPSYS} == FreeBSD
-	@${FIND} ${WRKSRC} \( -name '*.h' -o -name '*.cc' \) -type f \
-		-exec ${REINPLACE_CMD} -e 's/tr1::/std::/g' {} \; \
-		-exec ${REINPLACE_CMD} -e 's/std::std::/std::/g' {} \; \
-		-exec ${REINPLACE_CMD} -e '/namespace tr1/d' {} \; \
-		-exec ${REINPLACE_CMD} -e '/include/s,tr1/,,' {} \;
-	@${REINPLACE_CMD} -e 's/\.assign/.fill/' \
-		${WRKSRC}/src/torrent/utils/extents.h \
-		${WRKSRC}/src/torrent/utils/log.cc
 .endif
 
 post-install:

Added: head/net-p2p/libtorrent/files/patch-openssl-1.1.x
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net-p2p/libtorrent/files/patch-openssl-1.1.x	Thu Nov  8 22:52:54 2018	(r484484)
@@ -0,0 +1,107 @@
+https://github.com/rakshasa/libtorrent/commit/7b29b6bd2547e72e22b9b7981df27092842d2a10
+
+From 7b29b6bd2547e72e22b9b7981df27092842d2a10 Mon Sep 17 00:00:00 2001
+From: rakshasa <sundell.software@gmail.com>
+Date: Tue, 20 Dec 2016 19:51:02 +0900
+Subject: [PATCH] Added support for openssl 1.1.
+
+---
+ configure.ac                |  4 ++++
+ src/utils/diffie_hellman.cc | 36 ++++++++++++++++++++++++++++++++++--
+ 2 files changed, 38 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 5b1ea237..b885714d 100644
+--- configure.ac
++++ configure.ac
+@@ -71,12 +71,15 @@ AC_ARG_ENABLE(openssl,
+   [  --disable-openssl       Don't use OpenSSL's SHA1 implementation.],
+   [
+     if test "$enableval" = "yes"; then
++dnl move to scripts.
+       PKG_CHECK_MODULES(OPENSSL, libcrypto,
+         CXXFLAGS="$CXXFLAGS $OPENSSL_CFLAGS";
+         LIBS="$LIBS $OPENSSL_LIBS")
+ 
+       AC_DEFINE(USE_OPENSSL, 1, Using OpenSSL.)
+       AC_DEFINE(USE_OPENSSL_SHA, 1, Using OpenSSL's SHA1 implementation.)
++      AC_CHECK_LIB([crypto], [DH_set0_pqg], [AC_DEFINE(USE_OPENSSL_1_1, 1, Using OpenSSL 1.1.)])
++
+     else
+       AC_DEFINE(USE_NSS_SHA, 1, Using Mozilla's SHA1 implementation.)
+     fi
+@@ -87,6 +90,7 @@ AC_ARG_ENABLE(openssl,
+ 
+     AC_DEFINE(USE_OPENSSL, 1, Using OpenSSL.)
+     AC_DEFINE(USE_OPENSSL_SHA, 1, Using OpenSSL's SHA1 implementation.)
++    AC_CHECK_LIB([crypto], [DH_set0_pqg], [AC_DEFINE(USE_OPENSSL_1_1, 1, Using OpenSSL 1.1.)])
+   ]
+ )
+ 
+diff --git a/src/utils/diffie_hellman.cc b/src/utils/diffie_hellman.cc
+index aa653d45..7ec13165 100644
+--- src/utils/diffie_hellman.cc
++++ src/utils/diffie_hellman.cc
+@@ -54,11 +54,23 @@ DiffieHellman::DiffieHellman(const unsigned char *prime, int primeLength,
+   m_secret(NULL), m_size(0) {
+ 
+ #ifdef USE_OPENSSL
++
+   m_dh = DH_new();
++
++#ifdef USE_OPENSSL_1_1
++  BIGNUM * const dh_p = BN_bin2bn(prime, primeLength, NULL);
++  BIGNUM * const dh_g = BN_bin2bn(generator, generatorLength, NULL);
++
++  if (dh_p == NULL || dh_g == NULL ||
++      !DH_set0_pqg(m_dh, dh_p, NULL, dh_g))
++	  throw internal_error("Could not generate Diffie-Hellman parameters");
++#else
+   m_dh->p = BN_bin2bn(prime, primeLength, NULL);
+   m_dh->g = BN_bin2bn(generator, generatorLength, NULL);
++#endif
+ 
+   DH_generate_key(m_dh);
++
+ #else
+   throw internal_error("Compiled without encryption support.");
+ #endif
+@@ -74,7 +86,19 @@ DiffieHellman::~DiffieHellman() {
+ bool
+ DiffieHellman::is_valid() const {
+ #ifdef USE_OPENSSL
++  if (m_dh == NULL)
++    return false;
++
++#ifdef USE_OPENSSL_1_1
++  const BIGNUM *pub_key;
++
++  DH_get0_key(m_dh, &pub_key, NULL);
++
++  return pub_key != NULL;
++#else
+   return m_dh != NULL && m_dh->pub_key != NULL;
++#endif
++
+ #else
+   return false;
+ #endif
+@@ -103,8 +127,16 @@ DiffieHellman::store_pub_key(unsigned char* dest, unsigned int length) {
+ #ifdef USE_OPENSSL
+   std::memset(dest, 0, length);
+ 
+-  if ((int)length >= BN_num_bytes(m_dh->pub_key))
+-    BN_bn2bin(m_dh->pub_key, dest + length - BN_num_bytes(m_dh->pub_key));
++  const BIGNUM *pub_key;
++
++#ifdef USE_OPENSSL_1_1
++  DH_get0_key(m_dh, &pub_key, NULL);
++#else
++  pub_key = m_dh->pub_key;
++#endif
++
++  if ((int)length >= BN_num_bytes(pub_key))
++    BN_bn2bin(pub_key, dest + length - BN_num_bytes(pub_key));
+ #endif
+ }
+ 

Added: head/net-p2p/libtorrent/files/patch-socket-issue
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net-p2p/libtorrent/files/patch-socket-issue	Thu Nov  8 22:52:54 2018	(r484484)
@@ -0,0 +1,47 @@
+https://github.com/rakshasa/libtorrent/pull/181
+
+From 0f957c2576d0d0c4c227e4453d92f67884e608af Mon Sep 17 00:00:00 2001
+From: Vladyslav Movchan <vladislav.movchan@gmail.com>
+Date: Sat, 3 Nov 2018 19:52:56 +0200
+Subject: [PATCH] Prevent loss of 'm_ipv6_socket' attribute which led to
+ execution of setsockopt(..., IPPROTO_IP, IP_TOS, ...) on IPv6 socket
+
+---
+ src/net/socket_fd.cc | 4 ++--
+ src/net/socket_fd.h  | 1 +
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/net/socket_fd.cc b/src/net/socket_fd.cc
+index 54cb6ded..f04059f6 100644
+--- src/net/socket_fd.cc
++++ src/net/socket_fd.cc
+@@ -251,7 +251,7 @@ SocketFd::accept(rak::socket_address* sa) {
+   socklen_t len = sizeof(rak::socket_address);
+ 
+   if (sa == NULL) {
+-    return SocketFd(::accept(m_fd, NULL, &len));
++    return SocketFd(::accept(m_fd, NULL, &len), m_ipv6_socket);
+   }
+ 
+   int fd = ::accept(m_fd, sa->c_sockaddr(), &len);
+@@ -260,7 +260,7 @@ SocketFd::accept(rak::socket_address* sa) {
+     *sa = sa->sa_inet6()->normalize_address();
+   }
+ 
+-  return SocketFd(fd);
++  return SocketFd(fd, m_ipv6_socket);
+ }
+ 
+ // unsigned int
+diff --git a/src/net/socket_fd.h b/src/net/socket_fd.h
+index ca765e88..2329b4e9 100644
+--- src/net/socket_fd.h
++++ src/net/socket_fd.h
+@@ -51,6 +51,7 @@ class SocketFd {
+ 
+   SocketFd() : m_fd(-1) {}
+   explicit SocketFd(int fd) : m_fd(fd) {}
++  SocketFd(int fd, bool ipv6_socket) : m_fd(fd), m_ipv6_socket(ipv6_socket) {}
+ 
+   bool                is_valid() const                        { return m_fd >= 0; }
+   

Modified: head/net-p2p/libtorrent/pkg-plist
==============================================================================
--- head/net-p2p/libtorrent/pkg-plist	Thu Nov  8 22:41:49 2018	(r484483)
+++ head/net-p2p/libtorrent/pkg-plist	Thu Nov  8 22:52:54 2018	(r484484)
@@ -63,5 +63,6 @@ include/torrent/utils/thread_base.h
 include/torrent/utils/thread_interrupt.h
 include/torrent/utils/uri_parser.h
 lib/libtorrent.so
+lib/libtorrent.so.20
 lib/libtorrent.so.20.0.0
 libdata/pkgconfig/libtorrent.pc

Modified: head/net-p2p/rtorrent/Makefile
==============================================================================
--- head/net-p2p/rtorrent/Makefile	Thu Nov  8 22:41:49 2018	(r484483)
+++ head/net-p2p/rtorrent/Makefile	Thu Nov  8 22:52:54 2018	(r484484)
@@ -2,7 +2,7 @@
 
 PORTNAME=	rtorrent
 PORTVERSION=	0.9.7
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	net-p2p
 MASTER_SITES=	https://rtorrent.net/downloads/
 



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