=== modified file 'dcpp/ConnectionManager.cpp' --- dcpp/ConnectionManager.cpp 2013-12-06 21:45:24 +0000 +++ dcpp/ConnectionManager.cpp 2013-12-09 19:54:08 +0000 @@ -76,6 +76,11 @@ dcdebug("Skipping secure port: %d\n", CONNSETTING(TLS_PORT)); return; } + if(CONNSETTING(TCP_PORT) == CONNSETTING(TLS_PORT)) + { + LogManager::getInstance()->message(_("The encrypted transfer port cannot be the same as the transfer port, encrypted transfers will be disabled")); + return; + } secureServer.reset(new Server(true, Util::toString(CONNSETTING(TLS_PORT)), CONNSETTING(BIND_ADDRESS))); } === modified file 'win32/ConnectivityManualPage.cpp' --- win32/ConnectivityManualPage.cpp 2013-01-18 21:28:38 +0000 +++ win32/ConnectivityManualPage.cpp 2013-12-09 19:55:33 +0000 @@ -43,7 +43,9 @@ active(0), upnp(0), passive(0), -mapper(0) +mapper(0), +transferBox(0), +tlstransferBox(0) { setHelpId(IDH_CONNECTIVITYMANUALPAGE); @@ -100,11 +102,18 @@ boxGrid->column(0).size = 40; boxGrid->column(0).mode = GridInfo::STATIC; - items.emplace_back(boxGrid->addChild(WinUtil::Seeds::Dialog::intTextBox), setting, PropPage::T_INT); + auto inputBox = boxGrid->addChild(WinUtil::Seeds::Dialog::intTextBox); + items.emplace_back(inputBox, setting, PropPage::T_INT); + + return inputBox; }; - addPortBox(T_("Transfer"), SettingsManager::TCP_PORT, IDH_SETTINGS_CONNECTIVITY_PORT_TCP); - addPortBox(T_("Encrypted transfer"), SettingsManager::TLS_PORT, IDH_SETTINGS_CONNECTIVITY_PORT_TLS); + transferBox = addPortBox(T_("Transfer"), SettingsManager::TCP_PORT, IDH_SETTINGS_CONNECTIVITY_PORT_TCP); + transferBox->onUpdated([this] { onTransferPortUpdated(); }); + + tlstransferBox = addPortBox(T_("Encrypted transfer"), SettingsManager::TLS_PORT, IDH_SETTINGS_CONNECTIVITY_PORT_TLS); + tlstransferBox->onUpdated([this] { onTLSTransferPortUpdated(); }); + addPortBox(T_("Search"), SettingsManager::UDP_PORT, IDH_SETTINGS_CONNECTIVITY_PORT_UDP); } @@ -135,6 +144,11 @@ } void ConnectivityManualPage::write() { + if(transferBox->getText() == tlstransferBox->getText()) + { + tlstransferBox->setText(Util::emptyStringT); + } + PropPage::write(items); // Set the connection mode @@ -203,3 +217,21 @@ read(); }); } + +void ConnectivityManualPage::onTransferPortUpdated() +{ + validatePort(transferBox, tlstransferBox, T_("Transfer"), T_("encrypted transfer")); +} + +void ConnectivityManualPage::onTLSTransferPortUpdated() +{ + validatePort(tlstransferBox, transferBox, T_("Encrypted transfer"), T_("transfer")); +} + +void ConnectivityManualPage::validatePort(TextBoxPtr sourcebox, TextBoxPtr otherbox, const tstring& source, const tstring& other) +{ + if(sourcebox->getText() == otherbox->getText()) + { + sourcebox->showPopup(T_("Invalid value"), str(TF_("%1% port cannot be the same as the %2% port") % source % other), TTI_ERROR); + } +} === modified file 'win32/ConnectivityManualPage.h' --- win32/ConnectivityManualPage.h 2013-01-18 21:28:38 +0000 +++ win32/ConnectivityManualPage.h 2013-12-09 19:55:42 +0000 @@ -43,11 +43,19 @@ ComboBoxPtr mapper; + TextBoxPtr transferBox; + TextBoxPtr tlstransferBox; + void handleAutoClicked(); void read(); void updateAuto(); + void onTransferPortUpdated(); + void onTLSTransferPortUpdated(); + + void validatePort(TextBoxPtr sourceBox, TextBoxPtr otherBox, const tstring& source, const tstring& other); + // ConnectivityManagerListener void on(SettingChanged) noexcept; };