Merge pull request #10523 from Chocobo1/port

Use a randomized port number for the first run
This commit is contained in:
Mike Tzou 2019-08-08 14:12:54 +08:00 committed by GitHub
commit bd493e261e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -337,7 +337,7 @@ Session::Session(QObject *parent)
, m_isAltGlobalSpeedLimitEnabled(BITTORRENT_SESSION_KEY("UseAlternativeGlobalSpeedLimit"), false)
, m_isBandwidthSchedulerEnabled(BITTORRENT_SESSION_KEY("BandwidthSchedulerEnabled"), false)
, m_saveResumeDataInterval(BITTORRENT_SESSION_KEY("SaveResumeDataInterval"), 60)
, m_port(BITTORRENT_SESSION_KEY("Port"), 8999)
, m_port(BITTORRENT_SESSION_KEY("Port"), -1)
, m_useRandomPort(BITTORRENT_SESSION_KEY("UseRandomPort"), false)
, m_networkInterface(BITTORRENT_SESSION_KEY("Interface"))
, m_networkInterfaceName(BITTORRENT_SESSION_KEY("InterfaceName"))
@ -375,6 +375,9 @@ Session::Session(QObject *parent)
, m_extraLimit(0)
, m_recentErroredTorrentsTimer(new QTimer(this))
{
if (port() < 0)
m_port = Utils::Random::rand(1024, 65535);
initResumeFolder();
m_recentErroredTorrentsTimer->setSingleShot(true);
@ -1146,9 +1149,10 @@ void Session::configure(lt::settings_pack &settingsPack)
QString chosenIP;
#endif
if (m_listenInterfaceChanged) {
const ushort port = this->port();
const std::pair<int, int> ports(port, port);
settingsPack.set_int(lt::settings_pack::max_retry_port_bind, ports.second - ports.first);
const int port = useRandomPort() ? 0 : this->port();
if (port > 0) // user specified port
settingsPack.set_int(lt::settings_pack::max_retry_port_bind, 0);
for (QString ip : getListeningIPs()) {
lt::error_code ec;
std::string interfacesStr;
@ -2537,15 +2541,12 @@ void Session::setSaveResumeDataInterval(const uint value)
int Session::port() const
{
static int randomPort = Utils::Random::rand(1024, 65535);
if (useRandomPort())
return randomPort;
return m_port;
}
void Session::setPort(const int port)
{
if (port != this->port()) {
if (port != m_port) {
m_port = port;
configureListeningInterface();
}