Here's an update to miniupnpc-2.3.2. Various ports using UPNP_GetValidIGD are affected by an API change in 2.2.8; arguments were added to return the WAN address, and return values changed. The majority of the patches to cope with this are from upstream commits, I wrote the drawpile one myself because they removed that code in 2022.
Anyone want to do further checks? Index: net/miniupnp/miniupnpc/Makefile =================================================================== RCS file: /cvs/ports/net/miniupnp/miniupnpc/Makefile,v diff -u -p -r1.14 Makefile --- net/miniupnp/miniupnpc/Makefile 29 Feb 2024 14:01:26 -0000 1.14 +++ net/miniupnp/miniupnpc/Makefile 11 Mar 2025 10:25:22 -0000 @@ -1,17 +1,17 @@ COMMENT= UPnP IGD client lightweight library -DISTNAME= miniupnpc-2.2.6 +DISTNAME= miniupnpc-2.3.2 -SHARED_LIBS += miniupnpc 3.1 +SHARED_LIBS += miniupnpc 4.0 # MINIUPNPC_API_VERSION 20 WANTLIB += c -MAKE_FLAGS= APIVERSION=${LIBminiupnpc_VERSION} -FAKE_FLAGS= PREFIX=${TRUEPREFIX} +MODULES= devel/cmake +CONFIGURE_ARGS= -DUPNPC_BUILD_STATIC=false -USE_GMAKE= Yes - -CONFIGURE_STYLE= simple -CONFIGURE_SCRIPT= updateminiupnpcstrings.sh +post-install: + cd ${PREFIX}/bin; \ + mv external-ip.sh external-ip; \ + for i in *-shared; do mv $$i $${i%-shared}; done .include <bsd.port.mk> Index: net/miniupnp/miniupnpc/distinfo =================================================================== RCS file: /cvs/ports/net/miniupnp/miniupnpc/distinfo,v diff -u -p -r1.6 distinfo --- net/miniupnp/miniupnpc/distinfo 29 Feb 2024 14:01:26 -0000 1.6 +++ net/miniupnp/miniupnpc/distinfo 11 Mar 2025 10:25:22 -0000 @@ -1,2 +1,2 @@ -SHA256 (miniupnpc-2.2.6.tar.gz) = N/zZGVNQjD5i1pZLuP+8XUfz4TSB+lTmIU/MaHBMZvE= -SIZE (miniupnpc-2.2.6.tar.gz) = 103949 +SHA256 (miniupnpc-2.3.2.tar.gz) = mF3hbS5UScO6DTZjoMdssr/4JHKg63owYQfZP0RYb/4= +SIZE (miniupnpc-2.3.2.tar.gz) = 140137 Index: net/miniupnp/miniupnpc/patches/patch-Makefile =================================================================== RCS file: /cvs/ports/net/miniupnp/miniupnpc/patches/patch-Makefile,v diff -u -p -r1.8 patch-Makefile --- net/miniupnp/miniupnpc/patches/patch-Makefile 29 Feb 2024 14:01:26 -0000 1.8 +++ net/miniupnp/miniupnpc/patches/patch-Makefile 11 Mar 2025 10:25:22 -0000 @@ -1,7 +1,7 @@ Index: Makefile --- Makefile.orig +++ Makefile -@@ -157,7 +157,7 @@ endif +@@ -158,7 +158,7 @@ endif INSTALLDIRINC = $(INSTALLPREFIX)/include/miniupnpc INSTALLDIRLIB = $(INSTALLPREFIX)/$(LIBDIR) INSTALLDIRBIN = $(INSTALLPREFIX)/bin @@ -10,7 +10,7 @@ Index: Makefile PKGCONFIGDIR = $(INSTALLDIRLIB)/pkgconfig FILESTOINSTALL = $(LIBRARY) $(EXECUTABLES) -@@ -251,7 +251,6 @@ install: updateversion $(FILESTOINSTALL) +@@ -257,7 +257,6 @@ install: updateversion $(FILESTOINSTALL) $(INSTALL) -m 644 $(LIBRARY) $(DESTDIR)$(INSTALLDIRLIB) ifeq (, $(findstring amiga, $(OS))) $(INSTALL) -m 644 $(SHAREDLIBRARY) $(DESTDIR)$(INSTALLDIRLIB)/$(SONAME) Index: net/miniupnp/miniupnpc/pkg/PLIST =================================================================== RCS file: /cvs/ports/net/miniupnp/miniupnpc/pkg/PLIST,v diff -u -p -r1.3 PLIST --- net/miniupnp/miniupnpc/pkg/PLIST 29 Feb 2024 14:01:26 -0000 1.3 +++ net/miniupnp/miniupnpc/pkg/PLIST 11 Mar 2025 10:25:22 -0000 @@ -13,7 +13,11 @@ include/miniupnpc/upnpcommands.h include/miniupnpc/upnpdev.h include/miniupnpc/upnperrors.h include/miniupnpc/upnpreplyparse.h -@static-lib lib/libminiupnpc.a +lib/cmake/ +lib/cmake/miniupnpc/ +lib/cmake/miniupnpc/libminiupnpc-shared${MODCMAKE_BUILD_SUFFIX} +lib/cmake/miniupnpc/libminiupnpc-shared.cmake +lib/cmake/miniupnpc/miniupnpc-config.cmake @lib lib/libminiupnpc.so.${LIBminiupnpc_VERSION} lib/pkgconfig/miniupnpc.pc @man man/man3/miniupnpc.3 Index: emulators/flycast/patches/patch-core_network_miniupnp_cpp =================================================================== RCS file: emulators/flycast/patches/patch-core_network_miniupnp_cpp diff -N emulators/flycast/patches/patch-core_network_miniupnp_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ emulators/flycast/patches/patch-core_network_miniupnp_cpp 11 Mar 2025 10:25:22 -0000 @@ -0,0 +1,20 @@ +From 71982eda7a038e24942921e558845103b6c12326 Mon Sep 17 00:00:00 2001 +From: scribam <scri...@users.noreply.github.com> +Date: Mon, 24 Jun 2024 18:53:49 +0200 +Subject: [PATCH] miniupnp: add support for api version 18 + +Index: core/network/miniupnp.cpp +--- core/network/miniupnp.cpp.orig ++++ core/network/miniupnp.cpp +@@ -43,7 +43,11 @@ bool MiniUPnP::Init() + WARN_LOG(NETWORK, "UPnP discover failed: error %d", error); + return false; + } ++#if MINIUPNPC_API_VERSION >= 18 ++ error = UPNP_GetValidIGD(devlist, &urls, &data, lanAddress, sizeof(lanAddress), nullptr, 0); ++#else + error = UPNP_GetValidIGD(devlist, &urls, &data, lanAddress, sizeof(lanAddress)); ++#endif + freeUPNPDevlist(devlist); + if (error != 1) + { Index: games/godot4/patches/patch-modules_upnp_upnp_cpp =================================================================== RCS file: /cvs/ports/games/godot4/patches/patch-modules_upnp_upnp_cpp,v diff -u -p -r1.1.1.1 patch-modules_upnp_upnp_cpp --- games/godot4/patches/patch-modules_upnp_upnp_cpp 26 Nov 2023 18:09:33 -0000 1.1.1.1 +++ games/godot4/patches/patch-modules_upnp_upnp_cpp 11 Mar 2025 10:25:22 -0000 @@ -1,4 +1,11 @@ -fix include path for miniupnpc +hunk 1, fix include path for miniupnpc + +hunk 2, + +From 4c72d599f0a171a96e47004239f42756115b723f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= <rversche...@gmail.com> +Date: Wed, 18 Sep 2024 11:50:54 +0200 +Subject: [PATCH] miniupnpc: Update to 2.2.8 (new major 18) Index: modules/upnp/upnp.cpp --- modules/upnp/upnp.cpp.orig @@ -14,3 +21,15 @@ Index: modules/upnp/upnp.cpp #include <stdlib.h> +@@ -131,7 +131,11 @@ void UPNP::parse_igd(Ref<UPNPDevice> dev, UPNPDev *dev + GetUPNPUrls(&urls, &data, dev->get_description_url().utf8().get_data(), 0); + + char addr[16]; ++#if MINIUPNPC_API_VERSION >= 18 ++ int i = UPNP_GetValidIGD(devlist, &urls, &data, (char *)&addr, 16, nullptr, 0); ++#else + int i = UPNP_GetValidIGD(devlist, &urls, &data, (char *)&addr, 16); ++#endif + + if (i != 1) { + FreeUPNPUrls(&urls); Index: games/openclonk/patches/patch-src_network_C4Network2UPnPLinux_cpp =================================================================== RCS file: games/openclonk/patches/patch-src_network_C4Network2UPnPLinux_cpp diff -N games/openclonk/patches/patch-src_network_C4Network2UPnPLinux_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ games/openclonk/patches/patch-src_network_C4Network2UPnPLinux_cpp 11 Mar 2025 10:25:22 -0000 @@ -0,0 +1,21 @@ +From 5737af90d8054c27147e5cdcb1c57b75746518a8 Mon Sep 17 00:00:00 2001 +From: Lukas Werling <lu...@lwrl.de> +Date: Sat, 11 Jan 2025 23:55:07 +0100 +Subject: [PATCH] Fix build with miniupnpc 2.2.8 + +Index: src/network/C4Network2UPnPLinux.cpp +--- src/network/C4Network2UPnPLinux.cpp.orig ++++ src/network/C4Network2UPnPLinux.cpp +@@ -77,7 +77,12 @@ void C4Network2UPnPP::Init() + if ((devlist = upnpDiscover(2000, nullptr, nullptr, UPNP_LOCAL_PORT_ANY, 0, 2, &error))) + #endif + { ++#if MINIUPNPC_API_VERSION >= 18 ++ char wanaddr[64]; ++ if ((status = UPNP_GetValidIGD(devlist, &upnp_urls, &igd_data, lanaddr, sizeof(lanaddr), wanaddr, sizeof(wanaddr)))) ++#else + if ((status = UPNP_GetValidIGD(devlist, &upnp_urls, &igd_data, lanaddr, sizeof(lanaddr)))) ++#endif + { + ThreadLogS("UPnP: Found IGD %s (status %d)", upnp_urls.controlURL, status); + initialized = true; Index: graphics/drawpile/patches/patch-src_libshared_util_upnp_cpp =================================================================== RCS file: graphics/drawpile/patches/patch-src_libshared_util_upnp_cpp diff -N graphics/drawpile/patches/patch-src_libshared_util_upnp_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ graphics/drawpile/patches/patch-src_libshared_util_upnp_cpp 11 Mar 2025 10:25:22 -0000 @@ -0,0 +1,17 @@ +Index: src/libshared/util/upnp.cpp +--- src/libshared/util/upnp.cpp.orig ++++ src/libshared/util/upnp.cpp +@@ -95,9 +95,12 @@ void UPnPClient::doDiscover() + qWarning("UPnP: Error (%d) discovering devices!", error); + } + +- + char lanaddr[64]; ++#if MINIUPNPC_API_VERSION >= 18 ++ UPNP_GetValidIGD(d->devices, &d->urls, &d->data, lanaddr, sizeof(lanaddr), nullptr, 0); ++#else + UPNP_GetValidIGD(d->devices, &d->urls, &d->data, lanaddr, sizeof(lanaddr)); ++#endif + } + + void UPnPClient::doActivateForward(int port) Index: net/transmission/patches/patch-libtransmission_port-forwarding-upnp_cc =================================================================== RCS file: net/transmission/patches/patch-libtransmission_port-forwarding-upnp_cc diff -N net/transmission/patches/patch-libtransmission_port-forwarding-upnp_cc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ net/transmission/patches/patch-libtransmission_port-forwarding-upnp_cc 11 Mar 2025 10:25:22 -0000 @@ -0,0 +1,24 @@ +From febfe49ca3ecab1a7142ecb34012c1f0b2bcdee8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?C=C5=93ur?= <co...@gmx.fr> +Date: Sat, 15 Jun 2024 07:24:06 +0800 +Subject: [PATCH] bump miniupnpc to 2.2.8 (#6907) + +Index: libtransmission/port-forwarding-upnp.cc +--- libtransmission/port-forwarding-upnp.cc.orig ++++ libtransmission/port-forwarding-upnp.cc +@@ -275,8 +275,13 @@ tr_port_forwarding_state tr_upnpPulse(tr_upnp* handle, + + FreeUPNPUrls(&handle->urls); + auto lanaddr = std::array<char, TR_ADDRSTRLEN>{}; +- if (UPNP_GetValidIGD(devlist, &handle->urls, &handle->data, std::data(lanaddr), std::size(lanaddr) - 1) == +- UPNP_IGD_VALID_CONNECTED) ++ if ( ++#if (MINIUPNPC_API_VERSION >= 18) ++ UPNP_GetValidIGD(devlist, &handle->urls, &handle->data, std::data(lanaddr), std::size(lanaddr) - 1, nullptr, 0) ++#else ++ UPNP_GetValidIGD(devlist, &handle->urls, &handle->data, std::data(lanaddr), std::size(lanaddr) - 1) ++#endif ++ == UPNP_IGD_VALID_CONNECTED) + { + tr_logAddInfo(fmt::format(_("Found Internet Gateway Device '{url}'"), fmt::arg("url", handle->urls.controlURL))); + tr_logAddInfo(fmt::format(_("Local Address is '{address}'"), fmt::arg("address", lanaddr.data())));