|
|
@ -1,3 +1,11 @@ |
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
* Copyright (c) 2013-2024, The PurpleI2P Project |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* This file is part of Purple i2pd project and licensed under BSD3 |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* See full license text in LICENSE file at top of project tree |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
#ifdef USE_UPNP |
|
|
|
#ifdef USE_UPNP |
|
|
|
#include <string> |
|
|
|
#include <string> |
|
|
|
#include <thread> |
|
|
|
#include <thread> |
|
|
@ -166,11 +174,11 @@ namespace transport |
|
|
|
if (address && !address->host.is_v6 () && address->port) |
|
|
|
if (address && !address->host.is_v6 () && address->port) |
|
|
|
TryPortMapping (address); |
|
|
|
TryPortMapping (address); |
|
|
|
} |
|
|
|
} |
|
|
|
m_Timer.expires_from_now (boost::posix_time::minutes(20)); // every 20 minutes
|
|
|
|
m_Timer.expires_from_now (boost::posix_time::minutes(UPNP_PORT_FORWARDING_INTERVAL)); // every 20 minutes
|
|
|
|
m_Timer.async_wait ([this](const boost::system::error_code& ecode) |
|
|
|
m_Timer.async_wait ([this](const boost::system::error_code& ecode) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (ecode != boost::asio::error::operation_aborted) |
|
|
|
if (ecode != boost::asio::error::operation_aborted) |
|
|
|
PortMapping (); |
|
|
|
PortMapping (); |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|