bitcoin/ci/test
merge-script 6e21dedbf2
Merge bitcoin/bitcoin#31130: Drop miniupnp dependency
40e5f26a3f mapport: remove dead code in DispatchMapPort (Antoine Poinsot)
38fdf7c1fb mapport: drop outdated comments (Antoine Poinsot)
b7b2435290 doc: add release note for #31130 (Antoine Poinsot)
1b6dec98da depends: drop miniupnpc (Antoine Poinsot)
953533d021 doc: remove mentions of UPnP (Antoine Poinsot)
94ad614482 ci: remove UPnP options (Antoine Poinsot)
a9598e5eaa build: drop miniupnpc dependency (Antoine Poinsot)
a5fcfb7385 interfaces: remove now unused 'use_upnp' arg from 'mapPort' (Antoine Poinsot)
038bbe7b20 daemon: remove UPnP support (Antoine Poinsot)
844770b05e qt: remove UPnP settings (Antoine Poinsot)

Pull request description:

  This PR removes UPnP IGD support and drops our [miniupnp](https://github.com/miniupnp/miniupnp) dependency.

  Miniupnpc is a C library (somewhat) maintained by a single person which had several vulnerabilities in the past (a couple dozens are listed [here](https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=miniupnp)), some of which directly affected our software ([RCE in 2015](https://bitcoincore.org/en/2024/07/03/disclose_upnp_rce/), [OOM in 2020](https://bitcoincore.org/en/2024/07/31/disclose-upnp-oom/)).

  The main purpose of this functionality is to have more (non-data-center) reachable nodes on the network. For a non-technical user running Bitcoin Core at home, the software would automatically open a port on their router to receive incoming connections. This way, users not able to manually open a port on their router would still provide the network with more resources and enhance its diversity.

  However, due to past vulnerabilities (and a worry about unknown future ones) in miniupnpc this feature was disabled by default in https://github.com/bitcoin/bitcoin/pull/6795. Having it disabled by default kills (most of?) the purpose of having this functionality in the first place: someone technical enough to understand the `-upnp` startup option or the "enable UPnP" setting is most likely able to open a port on his box in the first place.

  In addition, laanwj implemented PCP with a NAT-PMP fallback directly in Bitcoin Core in https://github.com/bitcoin/bitcoin/pull/30043. If we ever want to re-enable automatic NAT traversal by default in Bitcoin Core, this is the best option (and in my opinion the only sane one). The NAT-PMP fallback makes it so compatibility shouldn't be (much of) an issue.

  On balance, i believe that keeping this functionality and this barely maintained C dependency has higher costs than benefits. Therefore i propose that we get rid of it.

ACKs for top commit:
  jarolrod:
    ACK 40e5f26a3f
  1440000bytes:
    Code Review ACK 40e5f26a3f
  laanwj:
    Code review ACK 40e5f26a3f
  i-am-yuvi:
    Tested ACK 40e5f26a3f

Tree-SHA512: 9ea48662775510f5ec6de7af65790f7c8d211603398e9d8c634a86387be81b28081419a95b4d6680d3d7fe6a9f16cec99f16516548201dc7e49781909899a657
2024-10-28 10:47:34 +00:00
..
00_setup_env.sh Merge bitcoin/bitcoin#30869: ci: Print inner env, Make ccache config more flexible 2024-09-19 10:42:09 +01:00
00_setup_env_arm.sh ci: Migrate CI scripts to CMake 2024-08-16 21:19:13 +01:00
00_setup_env_i686_centos.sh ci: Do not install Autotools packages 2024-09-14 13:09:11 +01:00
00_setup_env_i686_multiprocess.sh ci: Migrate CI scripts to CMake 2024-08-16 21:19:13 +01:00
00_setup_env_mac_cross.sh ci: Migrate CI scripts to CMake 2024-08-16 21:19:13 +01:00
00_setup_env_mac_native.sh ci: remove UPnP options 2024-10-25 09:27:12 -04:00
00_setup_env_native_asan.sh ci: remove UPnP options 2024-10-25 09:27:12 -04:00
00_setup_env_native_fuzz.sh ci: Bump default CCACHE_MAXSIZE to 500M 2024-09-12 12:34:02 +02:00
00_setup_env_native_fuzz_with_msan.sh ci: Bump default CCACHE_MAXSIZE to 500M 2024-09-12 12:34:02 +02:00
00_setup_env_native_fuzz_with_valgrind.sh ci: add LLVM_SYMBOLIZER_PATH to Valgrind fuzz job 2024-09-24 17:04:44 +01:00
00_setup_env_native_msan.sh ci: Bump default CCACHE_MAXSIZE to 500M 2024-09-12 12:34:02 +02:00
00_setup_env_native_nowallet_libbitcoinkernel.sh Bump python minimum supported version to 3.10 2024-08-28 15:53:07 +02:00
00_setup_env_native_previous_releases.sh ci: remove UPnP options 2024-10-25 09:27:12 -04:00
00_setup_env_native_tidy.sh ci: remove UPnP options 2024-10-25 09:27:12 -04:00
00_setup_env_native_tsan.sh ci: Migrate CI scripts to CMake 2024-08-16 21:19:13 +01:00
00_setup_env_native_valgrind.sh ci: remove UPnP options 2024-10-25 09:27:12 -04:00
00_setup_env_s390x.sh ci: Migrate CI scripts to CMake 2024-08-16 21:19:13 +01:00
00_setup_env_win64.sh ci: Migrate CI scripts to CMake 2024-08-16 21:19:13 +01:00
01_base_install.sh ci: Approximate MAKEJOBS in image build phase 2024-10-08 17:09:54 +02:00
02_run_container.sh ci: Temporary workaround for old CCACHE_DIR cirrus env 2024-10-24 11:43:33 +02:00
03_test_script.sh Merge bitcoin/bitcoin#31045: ci: Add missing -DWERROR=ON to test-each-commit 2024-10-08 15:36:30 +01:00
GetCMakeLogFiles.cmake ci: Handle log files regardless of CMake's version 2024-09-07 14:38:14 +01:00
wrap-valgrind.sh scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
wrap-wine.sh ci: Migrate CI scripts to CMake 2024-08-16 21:19:13 +01:00