Browse Source

miniupnp dependency removed, yes! :-) fix #130

libtorrent implements a upnp client: use it to map the other twisterd port.
miguelfreitas
Miguel Freitas 11 years ago
parent
commit
2168e34677
  1. 6
      Makefile.am
  2. 27
      configure.ac
  3. 26
      doc/build-unix.md
  4. 1
      libtorrent/include/libtorrent/aux_/session_impl.hpp
  5. 11
      libtorrent/src/session_impl.cpp
  6. 6
      src/init.cpp
  7. 5
      src/main.h
  8. 13
      src/makefile.android
  9. 12
      src/makefile.freebsd
  10. 8
      src/makefile.mingw
  11. 12
      src/makefile.osx
  12. 13
      src/makefile.unix
  13. 12
      src/twister.cpp
  14. 17
      twister-qt.pro

6
Makefile.am

@ -162,17 +162,13 @@ BITCOIN_TWISTER_SOURCES = \ @@ -162,17 +162,13 @@ BITCOIN_TWISTER_SOURCES = \
src/twister_utils.cpp \
$(SSE2_SOURCES)
if USE_UPNP
UPNP_LIB = -lminiupnpc
endif
twisterd_SOURCES = $(LIBTORRENT_SOURCES) $(BITCOIN_TWISTER_SOURCES)
twisterd_LDFLAGS = @OPENSSL_LDFLAGS@ @DB_CXX_LDFLAGS@
twisterd_DEPENDENCIES = $(LEVELDB_LIB)
twisterd_LDADD = $(LEVELDB_LIB) $(UPNP_LIB) \
twisterd_LDADD = $(LEVELDB_LIB) \
@BOOST_SYSTEM_LIB@ @BOOST_FILESYSTEM_LIB@ @BOOST_PROGRAM_OPTIONS_LIB@ @BOOST_THREAD_LIB@ @BOOST_CHRONO_LIB@ @BOOST_LOCALE_LIB@ \
@BOOST_REGEX_LIB@ @DB_CXX_LIBS@ @OPENSSL_LIBS@

27
configure.ac

@ -205,16 +205,6 @@ AC_ARG_ENABLE( @@ -205,16 +205,6 @@ AC_ARG_ENABLE(
[[ARG_ENABLE_SSE2=yes]]
)
AC_ARG_ENABLE(
[upnp],
[AS_HELP_STRING(
[--enable-upnp],
[enable miniupnp support [default=yes]])],
[[ARG_ENABLE_UPNP=$enableval]],
[[ARG_ENABLE_UPNP=yes]]
)
AC_ARG_ENABLE(
[pool-allocators],
[AS_HELP_STRING(
@ -474,21 +464,6 @@ AS_CASE(["$ARG_ENABLE_SSE2"], @@ -474,21 +464,6 @@ AS_CASE(["$ARG_ENABLE_SSE2"],
AC_MSG_ERROR([Unknown option "$ARG_ENABLE_SSE2". Use either "yes" or "no".])]
)
AC_MSG_CHECKING([whether miniupnp should be enabled])
AS_CASE(["$ARG_ENABLE_UPNP"],
["yes"|"on"], [
AC_MSG_RESULT([yes])
AC_DEFINE([USE_UPNP],[1],[Enable miniupnp])
COMPILETIME_OPTIONS="$COMPILETIME_OPTIONS -DUSE_UPNP=1 "
],
["no"|"off"], [
AC_MSG_RESULT([no])
],
[AC_MSG_RESULT([$ARG_ENABLE_UPNP])
AC_MSG_ERROR([Unknown option "$ARG_ENABLE_UPNP". Use either "yes" or "no".])]
)
AC_MSG_CHECKING([whether geoip support should be enabled])
AS_CASE(["$ARG_ENABLE_GEOIP"],
["yes"], [
@ -652,7 +627,6 @@ AM_CONDITIONAL([ENABLE_PYTHON_BINDING], [test "x$ARG_ENABLE_PYTHON_BINDING" = "x @@ -652,7 +627,6 @@ AM_CONDITIONAL([ENABLE_PYTHON_BINDING], [test "x$ARG_ENABLE_PYTHON_BINDING" = "x
AM_CONDITIONAL([WITH_SHIPPED_GEOIP], [test "x$ARG_WITH_LIBGEOIP" = "xno" ])
AM_CONDITIONAL([WITH_OPENSSL], [test "x$ARG_ENABLE_ENCRYPTION" = "xyes" -o "x$ARG_ENABLE_ENCRYPTION" = "xon" ])
AM_CONDITIONAL([USE_SSE2], [test "x$ARG_ENABLE_SSE2" = "xyes" -o "x$ARG_ENABLE_SSE2" = "xon" ])
AM_CONDITIONAL([USE_UPNP], [test "x$ARG_ENABLE_UPNP" = "xyes" -o "x$ARG_ENABLE_UPNP" = "xon" ])
###############################################################################
# Other useful stuff
@ -751,7 +725,6 @@ Build options: @@ -751,7 +725,6 @@ Build options:
Features:
encryption support: ${ARG_ENABLE_ENCRYPTION:-yes}
SSE2 Scrypt: ${ARG_ENABLE_SSE2:-yes}
miniupnp support: ${ARG_ENABLE_UPNP:-yes}
geoip support: ${ARG_ENABLE_GEOIP:-yes}
dht support: ${ARG_ENABLE_DHT:-yes}
pool allocators: ${ARG_ENABLE_POOL_ALLOC:-yes}

26
doc/build-unix.md

@ -18,15 +18,6 @@ Dependencies @@ -18,15 +18,6 @@ Dependencies
libssl SSL Support Secure communications
libdb4.8 Berkeley DB Blockchain & wallet storage
libboost Boost C++ Library
miniupnpc UPnP Support Optional firewall-jumping support
[miniupnpc](http://miniupnp.free.fr/) may be used for UPnP port mapping. It can be downloaded from [here](
http://miniupnp.tuxfamily.org/files/). UPnP support is compiled in and
turned off by default. Set USE_UPNP to a different value to control this:
USE_UPNP= No UPnP support miniupnp not required
USE_UPNP=0 (the default) UPnP support turned off by default at runtime
USE_UPNP=1 UPnP support turned on by default at runtime
IPv6 support may be disabled by setting:
@ -36,14 +27,12 @@ Licenses of statically linked libraries: @@ -36,14 +27,12 @@ Licenses of statically linked libraries:
Berkeley DB New BSD license with additional requirement that linked
software must be free open source
Boost MIT-like license
miniupnpc New (3-clause) BSD license
- Versions used in this release:
- GCC 4.3.3
- OpenSSL 1.0.1c
- Berkeley DB 4.8.30.NC
- Boost 1.37
- miniupnpc 1.6
Dependency Build Instructions: Ubuntu & Debian
----------------------------------------------
@ -69,10 +58,6 @@ for other Ubuntu & Debian: @@ -69,10 +58,6 @@ for other Ubuntu & Debian:
(If using Boost 1.37, append -mt to the boost libraries in the makefile)
Optional:
sudo apt-get install libminiupnpc-dev (see USE_UPNP compile flag)
Dependency Build Instructions: Gentoo
-------------------------------------
@ -85,7 +70,7 @@ Note: If you just want to install bitcoind on Gentoo, you can add the Bitcoin ov @@ -85,7 +70,7 @@ Note: If you just want to install bitcoind on Gentoo, you can add the Bitcoin ov
Take the following steps to build (no UPnP support):
cd ${BITCOIN_DIR}/src
make -f makefile.unix USE_UPNP= USE_IPV6=1 BDB_INCLUDE_PATH='/usr/include/db4.8'
make -f makefile.unix USE_IPV6=1 BDB_INCLUDE_PATH='/usr/include/db4.8'
strip bitcoind
@ -95,15 +80,6 @@ The release is built with GCC and then "strip bitcoind" to strip the debug @@ -95,15 +80,6 @@ The release is built with GCC and then "strip bitcoind" to strip the debug
symbols, which reduces the executable size by about 90%.
miniupnpc
---------
tar -xzvf miniupnpc-1.6.tar.gz
cd miniupnpc-1.6
make
sudo su
make install
Berkeley DB
-----------
You need Berkeley DB 4.8. If you have to build Berkeley DB yourself:

1
libtorrent/include/libtorrent/aux_/session_impl.hpp

@ -957,6 +957,7 @@ namespace libtorrent @@ -957,6 +957,7 @@ namespace libtorrent
// 0 is natpmp 1 is upnp
int m_tcp_mapping[2];
int m_twister_tcp_mapping[2];
int m_udp_mapping[2];
#ifdef TORRENT_USE_OPENSSL
int m_ssl_mapping[2];

11
libtorrent/src/session_impl.cpp

@ -85,6 +85,8 @@ POSSIBILITY OF SUCH DAMAGE. @@ -85,6 +85,8 @@ POSSIBILITY OF SUCH DAMAGE.
#include "libtorrent/random.hpp"
#include "libtorrent/magnet_uri.hpp"
#include "twister.h" // for LIBTORRENT_PORT_OFFSET
#if defined TORRENT_STATS && defined __MACH__
#include <mach/task.h>
#endif
@ -766,6 +768,8 @@ namespace aux { @@ -766,6 +768,8 @@ namespace aux {
m_tcp_mapping[0] = -1;
m_tcp_mapping[1] = -1;
m_twister_tcp_mapping[0] = -1;
m_twister_tcp_mapping[1] = -1;
m_udp_mapping[0] = -1;
m_udp_mapping[1] = -1;
#ifdef TORRENT_USE_OPENSSL
@ -2463,6 +2467,9 @@ retry: @@ -2463,6 +2467,9 @@ retry:
{
if (m_tcp_mapping[0] != -1) m_natpmp->delete_mapping(m_tcp_mapping[0]);
m_tcp_mapping[0] = m_natpmp->add_mapping(natpmp::tcp, tcp_port, tcp_port);
if (m_twister_tcp_mapping[0] != -1) m_natpmp->delete_mapping(m_twister_tcp_mapping[0]);
m_twister_tcp_mapping[0] = m_natpmp->add_mapping(natpmp::tcp,
tcp_port-LIBTORRENT_PORT_OFFSET, tcp_port-LIBTORRENT_PORT_OFFSET);
#ifdef TORRENT_USE_OPENSSL
if (m_ssl_mapping[0] != -1) m_natpmp->delete_mapping(m_ssl_mapping[0]);
m_ssl_mapping[0] = m_natpmp->add_mapping(natpmp::tcp, ssl_port, ssl_port);
@ -2472,6 +2479,9 @@ retry: @@ -2472,6 +2479,9 @@ retry:
{
if (m_tcp_mapping[1] != -1) m_upnp->delete_mapping(m_tcp_mapping[1]);
m_tcp_mapping[1] = m_upnp->add_mapping(upnp::tcp, tcp_port, tcp_port);
if (m_twister_tcp_mapping[1] != -1) m_upnp->delete_mapping(m_twister_tcp_mapping[1]);
m_twister_tcp_mapping[1] = m_upnp->add_mapping(upnp::tcp,
tcp_port-LIBTORRENT_PORT_OFFSET, tcp_port-LIBTORRENT_PORT_OFFSET);
#ifdef TORRENT_USE_OPENSSL
if (m_ssl_mapping[1] != -1) m_upnp->delete_mapping(m_ssl_mapping[1]);
m_ssl_mapping[1] = m_upnp->add_mapping(upnp::tcp, ssl_port, ssl_port);
@ -6249,6 +6259,7 @@ retry: @@ -6249,6 +6259,7 @@ retry:
m_upnp->close();
m_udp_mapping[1] = -1;
m_tcp_mapping[1] = -1;
m_twister_tcp_mapping[1] = -1;
#ifdef TORRENT_USE_OPENSSL
m_ssl_mapping[1] = -1;
#endif

6
src/init.cpp

@ -211,13 +211,7 @@ std::string HelpMessage() @@ -211,13 +211,7 @@ std::string HelpMessage()
strUsage += " -bantime=<n> " + _("Number of seconds to keep misbehaving peers from reconnecting (default: 86400)") + "\n";
strUsage += " -maxreceivebuffer=<n> " + _("Maximum per-connection receive buffer, <n>*1000 bytes (default: 5000)") + "\n";
strUsage += " -maxsendbuffer=<n> " + _("Maximum per-connection send buffer, <n>*1000 bytes (default: 1000)") + "\n";
#ifdef USE_UPNP
#if USE_UPNP
strUsage += " -upnp " + _("Use UPnP to map the listening port (default: 1 when listening)") + "\n";
#else
strUsage += " -upnp " + _("Use UPnP to map the listening port (default: 0)") + "\n";
#endif
#endif
strUsage += " -paytxfee=<amt> " + _("Fee per KB to add to transactions you send") + "\n";
if (fHaveGUI)
strUsage += " -server " + _("Accept command line and JSON-RPC commands") + "\n";

5
src/main.h

@ -54,11 +54,6 @@ static const unsigned int LOCKTIME_THRESHOLD = 500000000; // Tue Nov 5 00:53:20 @@ -54,11 +54,6 @@ static const unsigned int LOCKTIME_THRESHOLD = 500000000; // Tue Nov 5 00:53:20
static const int MAX_SCRIPTCHECK_THREADS = 16;
/** Default amount of block size reserved for high-priority transactions (in bytes) */
static const int DEFAULT_BLOCK_PRIORITY_SIZE = 27000;
#ifdef USE_UPNP
static const int fHaveUPnP = true;
#else
static const int fHaveUPnP = false;
#endif
/** The maximum size for spam messages */
static const int MAX_SPAM_MSG_SIZE = 140;
/** The maximum size for username */

13
src/makefile.android

@ -2,11 +2,6 @@ @@ -2,11 +2,6 @@
# Distributed under the MIT/X11 software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
# :=0 --> UPnP support turned off by default at runtime
# :=1 --> UPnP support turned on by default at runtime
# :=- --> No UPnP support - miniupnp not required
USE_UPNP:=-
# :=1 --> Enable IPv6 support
# :=0 --> Disable IPv6 support
USE_IPV6:=0
@ -36,14 +31,6 @@ TESTLIBS += \ @@ -36,14 +31,6 @@ TESTLIBS += \
-Wl,-B$(LMODE) \
-l boost_unit_test_framework$(BOOST_LIB_SUFFIX)
ifndef USE_UPNP
override USE_UPNP = -
endif
ifneq (${USE_UPNP}, -)
LIBS += -l miniupnpc
DEFS += -DUSE_UPNP=$(USE_UPNP)
endif
ifneq (${USE_IPV6}, -)
DEFS += -DUSE_IPV6=$(USE_IPV6)
endif

12
src/makefile.freebsd

@ -2,11 +2,6 @@ @@ -2,11 +2,6 @@
# Distributed under the MIT/X11 software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
# :=0 --> UPnP support turned off by default at runtime
# :=1 --> UPnP support turned on by default at runtime
# :=- --> No UPnP support - miniupnp not required
USE_UPNP:=1
# :=1 --> Enable IPv6 support
# :=0 --> Disable IPv6 support
USE_IPV6:=1
@ -48,13 +43,6 @@ TESTLIBS += \ @@ -48,13 +43,6 @@ TESTLIBS += \
-Wl,-B$(LMODE) \
-l boost_unit_test_framework$(BOOST_LIB_SUFFIX)
ifndef USE_UPNP
override USE_UPNP = -
endif
ifneq (${USE_UPNP}, -)
LIBS += -l miniupnpc
DEFS += -DUSE_UPNP=$(USE_UPNP)
endif
ifneq (${USE_IPV6}, -)
DEFS += -DUSE_IPV6=$(USE_IPV6)

8
src/makefile.mingw

@ -17,7 +17,6 @@ @@ -17,7 +17,6 @@
CXX ?= g++
USE_UPNP:=-
USE_IPV6:=1
DEPSDIR?=/usr/local
@ -52,13 +51,6 @@ LDFLAGS=-Wl,--dynamicbase -Wl,--nxcompat -Wl,--large-address-aware @@ -52,13 +51,6 @@ LDFLAGS=-Wl,--dynamicbase -Wl,--nxcompat -Wl,--large-address-aware
TESTDEFS = -DTEST_DATA_DIR=$(abspath test/data)
ifndef USE_UPNP
override USE_UPNP = -
endif
ifneq (${USE_UPNP}, -)
LIBS += -l miniupnpc -l iphlpapi
DEFS += -DSTATICLIB -DUSE_UPNP=$(USE_UPNP)
endif
ifneq (${USE_IPV6}, -)
DEFS += -DUSE_IPV6=$(USE_IPV6)

12
src/makefile.osx vendored

@ -2,11 +2,6 @@ @@ -2,11 +2,6 @@
# Distributed under the MIT/X11 software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
# :=0 --> UPnP support turned off by default at runtime
# :=1 --> UPnP support turned on by default at runtime
# :=- --> No UPnP support - miniupnp not required
USE_UPNP:=1
# :=1 --> Enable IPv6 support
# :=0 --> Disable IPv6 support
USE_IPV6:=1
@ -48,13 +43,6 @@ TESTLIBS += \ @@ -48,13 +43,6 @@ TESTLIBS += \
-l boost_unit_test_framework$(BOOST_LIB_SUFFIX)
# -Wl,-B$(LMODE) // does not work on OSX
ifndef USE_UPNP
override USE_UPNP = -
endif
ifneq (${USE_UPNP}, -)
LIBS += -l miniupnpc
DEFS += -DUSE_UPNP=$(USE_UPNP)
endif
ifneq (${USE_IPV6}, -)
DEFS += -DUSE_IPV6=$(USE_IPV6)

13
src/makefile.unix

@ -2,11 +2,6 @@ @@ -2,11 +2,6 @@
# Distributed under the MIT/X11 software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
# :=0 --> UPnP support turned off by default at runtime
# :=1 --> UPnP support turned on by default at runtime
# :=- --> No UPnP support - miniupnp not required
USE_UPNP:=1
# :=1 --> Enable IPv6 support
# :=0 --> Disable IPv6 support
USE_IPV6:=1
@ -48,14 +43,6 @@ TESTLIBS += \ @@ -48,14 +43,6 @@ TESTLIBS += \
-Wl,-B$(LMODE) \
-l boost_unit_test_framework$(BOOST_LIB_SUFFIX)
ifndef USE_UPNP
override USE_UPNP = -
endif
ifneq (${USE_UPNP}, -)
LIBS += -l miniupnpc
DEFS += -DUSE_UPNP=$(USE_UPNP)
endif
ifneq (${USE_IPV6}, -)
DEFS += -DUSE_IPV6=$(USE_IPV6)
endif

12
src/twister.cpp

@ -254,8 +254,8 @@ void ThreadWaitExtIP() @@ -254,8 +254,8 @@ void ThreadWaitExtIP()
std::string ipStr;
// wait up to 5 seconds for bitcoin to get the external IP
for( int i = 0; i < 10; i++ ) {
// wait up to 10 seconds for bitcoin to get the external IP
for( int i = 0; i < 20; i++ ) {
const CNetAddr paddrPeer("8.8.8.8");
CAddress addr( GetLocalAddress(&paddrPeer) );
if( addr.IsValid() ) {
@ -309,8 +309,10 @@ void ThreadWaitExtIP() @@ -309,8 +309,10 @@ void ThreadWaitExtIP()
}
if( !m_usingProxy ) {
ses->start_upnp();
ses->start_natpmp();
if( GetBoolArg("-upnp", true) ) {
ses->start_upnp();
ses->start_natpmp();
}
ses->listen_on(std::make_pair(listen_port, listen_port)
, ec, bind_to_interface.c_str());
@ -334,7 +336,7 @@ void ThreadWaitExtIP() @@ -334,7 +336,7 @@ void ThreadWaitExtIP()
}
}
session_settings settings;
session_settings settings("twisterd/"+FormatFullVersion());
// settings to test local connections
settings.allow_multiple_connections_per_ip = true;
//settings.enable_outgoing_utp = false; // (false to see connections in netstat)

17
twister-qt.pro

@ -58,23 +58,6 @@ contains(USE_QRCODE, 1) { @@ -58,23 +58,6 @@ contains(USE_QRCODE, 1) {
LIBS += -lqrencode
}
# use: qmake "USE_UPNP=1" ( enabled by default; default)
# or: qmake "USE_UPNP=0" (disabled by default)
# or: qmake "USE_UPNP=-" (not supported)
# miniupnpc (http://miniupnp.free.fr/files/) must be installed for support
contains(USE_UPNP, -) {
message(Building without UPNP support)
} else {
message(Building with UPNP support)
count(USE_UPNP, 0) {
USE_UPNP=1
}
DEFINES += USE_UPNP=$$USE_UPNP STATICLIB
INCLUDEPATH += $$MINIUPNPC_INCLUDE_PATH
LIBS += $$join(MINIUPNPC_LIB_PATH,,-L,) -lminiupnpc
win32:LIBS += -liphlpapi
}
# use: qmake "USE_DBUS=1"
contains(USE_DBUS, 1) {
message(Building with DBUS (Freedesktop notifications) support)

Loading…
Cancel
Save