diff --git a/include/libtorrent/aux_/session_impl.hpp b/include/libtorrent/aux_/session_impl.hpp index 1d97a9d12..826e9cf7e 100644 --- a/include/libtorrent/aux_/session_impl.hpp +++ b/include/libtorrent/aux_/session_impl.hpp @@ -646,7 +646,7 @@ namespace aux { void stop_natpmp(); void stop_upnp(); - port_mapping_t add_port_mapping(portmap_protocol t, int external_port + std::vector add_port_mapping(portmap_protocol t, int external_port , int local_port); void delete_port_mapping(port_mapping_t handle); diff --git a/include/libtorrent/session_handle.hpp b/include/libtorrent/session_handle.hpp index b06fe078f..fb737de14 100644 --- a/include/libtorrent/session_handle.hpp +++ b/include/libtorrent/session_handle.hpp @@ -1012,7 +1012,7 @@ namespace libtorrent { // whichever is enabled. The return value is a handle referring to the // port mapping that was just created. Pass it to delete_port_mapping() // to remove it. - port_mapping_t add_port_mapping(portmap_protocol t, int external_port, int local_port); + std::vector add_port_mapping(portmap_protocol t, int external_port, int local_port); void delete_port_mapping(port_mapping_t handle); // This option indicates if the ports are mapped using natpmp diff --git a/src/session_handle.cpp b/src/session_handle.cpp index bf93a5cd7..bd87aa21f 100644 --- a/src/session_handle.cpp +++ b/src/session_handle.cpp @@ -1226,10 +1226,10 @@ namespace { } #endif // TORRENT_ABI_VERSION - port_mapping_t session_handle::add_port_mapping(portmap_protocol const t + std::vector session_handle::add_port_mapping(portmap_protocol const t , int external_port, int local_port) { - return sync_call_ret(&session_impl::add_port_mapping, t, external_port, local_port); + return sync_call_ret>(&session_impl::add_port_mapping, t, external_port, local_port); } void session_handle::delete_port_mapping(port_mapping_t handle) diff --git a/src/session_impl.cpp b/src/session_impl.cpp index 974a7177d..93488a8d5 100644 --- a/src/session_impl.cpp +++ b/src/session_impl.cpp @@ -6696,17 +6696,17 @@ namespace aux { return m_upnp.get(); } - port_mapping_t session_impl::add_port_mapping(portmap_protocol const t + std::vector session_impl::add_port_mapping(portmap_protocol const t , int const external_port , int const local_port) { - port_mapping_t ret{-1}; - if (m_upnp) ret = m_upnp->add_mapping(t, external_port - , tcp::endpoint({}, static_cast(local_port))); + std::vector ret; + if (m_upnp) ret.push_back(m_upnp->add_mapping(t, external_port + , tcp::endpoint({}, static_cast(local_port)))); for (auto& s : m_listen_sockets) { - if (s->natpmp_mapper) ret = s->natpmp_mapper->add_mapping(t, external_port - , tcp::endpoint({}, static_cast(local_port))); + if (s->natpmp_mapper) ret.push_back(s->natpmp_mapper->add_mapping(t, external_port + , tcp::endpoint({}, static_cast(local_port)))); } return ret; }