← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 2652: connectivity detection fixes

 

------------------------------------------------------------
revno: 2652
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Tue 2011-10-25 20:07:46 +0200
message:
  connectivity detection fixes
modified:
  dcpp/ClientManager.cpp
  dcpp/ConnectivityManager.cpp
  dcpp/ConnectivityManager.h
  dcpp/SettingsManager.h
  dcpp/Util.cpp
  win32/HubFrame.cpp
  win32/Mapper_MiniUPnPc.cpp


--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk

Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'dcpp/ClientManager.cpp'
--- dcpp/ClientManager.cpp	2011-10-20 14:14:24 +0000
+++ dcpp/ClientManager.cpp	2011-10-25 18:07:46 +0000
@@ -19,17 +19,18 @@
 #include "stdinc.h"
 #include "ClientManager.h"
 
-#include "ShareManager.h"
-#include "SearchManager.h"
+#include "AdcHub.h"
 #include "ConnectionManager.h"
+#include "ConnectivityManager.h"
 #include "CryptoManager.h"
 #include "FavoriteManager.h"
+#include "File.h"
+#include "NmdcHub.h"
+#include "SearchManager.h"
+#include "SearchResult.h"
+#include "ShareManager.h"
 #include "SimpleXML.h"
 #include "UserCommand.h"
-#include "SearchResult.h"
-#include "File.h"
-#include "AdcHub.h"
-#include "NmdcHub.h"
 
 namespace dcpp {
 
@@ -605,7 +606,7 @@
 }
 
 bool ClientManager::isActive() const {
-	return SETTING(INCOMING_CONNECTIONS) != SettingsManager::INCOMING_FIREWALL_PASSIVE;
+	return CONNSETTING(INCOMING_CONNECTIONS) != SettingsManager::INCOMING_FIREWALL_PASSIVE;
 }
 
 const CID& ClientManager::getMyPID() {

=== modified file 'dcpp/ConnectivityManager.cpp'
--- dcpp/ConnectivityManager.cpp	2011-10-22 16:41:13 +0000
+++ dcpp/ConnectivityManager.cpp	2011-10-25 18:07:46 +0000
@@ -35,14 +35,14 @@
 {
 }
 
-const string& ConnectivityManager::get(SettingsManager::StrSetting setting) const {
+const string& ConnectivityManager::get(SettingsManager::StrSetting setting, bool useDefault) const {
 	if(BOOLSETTING(AUTO_DETECT_CONNECTION)) {
 		auto i = autoSettings.find(setting);
 		if(i != autoSettings.end()) {
 			return boost::get<const string&>(i->second);
 		}
 	}
-	return SettingsManager::getInstance()->get(setting);
+	return SettingsManager::getInstance()->get(setting, useDefault);
 }
 
 int ConnectivityManager::get(SettingsManager::IntSetting setting) const {
@@ -83,9 +83,10 @@
 		SettingsManager::BIND_ADDRESS, SettingsManager::BIND_ADDRESS6, SettingsManager::INCOMING_CONNECTIONS };
 	std::for_each(settings, settings + sizeof(settings) / sizeof(settings[0]), [this](int setting) {
 		if(setting >= SettingsManager::STR_FIRST && setting < SettingsManager::STR_LAST) {
-			autoSettings[setting] = string();
+			auto s = static_cast<SettingsManager::StrSetting>(setting);
+			autoSettings[setting] = SettingsManager::getInstance()->isDefault(s) ? string() : SettingsManager::getInstance()->getDefault(s);
 		} else if(setting >= SettingsManager::INT_FIRST && setting < SettingsManager::INT_LAST) {
-			autoSettings[setting] = 0;
+			autoSettings[setting] = SettingsManager::getInstance()->getDefault(static_cast<SettingsManager::IntSetting>(setting));
 		}
 	});
 

=== modified file 'dcpp/ConnectivityManager.h'
--- dcpp/ConnectivityManager.h	2011-10-22 16:41:13 +0000
+++ dcpp/ConnectivityManager.h	2011-10-25 18:07:46 +0000
@@ -51,7 +51,8 @@
 class ConnectivityManager : public Singleton<ConnectivityManager>, public Speaker<ConnectivityManagerListener>
 {
 public:
-	const string& get(SettingsManager::StrSetting setting) const;
+	/// @param useDefault return an empty string if the value hasn't been configured (rather than the SettingsManager default).
+	const string& get(SettingsManager::StrSetting setting, bool useDefault = true) const;
 	int get(SettingsManager::IntSetting setting) const;
 	void set(SettingsManager::StrSetting setting, const string& str);
 
@@ -87,7 +88,7 @@
 	unordered_map<int, boost::variant<int, string>> autoSettings;
 };
 
-#define CONNSETTING(k) SettingsManager::getInstance()->get(SettingsManager::k)
+#define CONNSETTING(k) ConnectivityManager::getInstance()->get(SettingsManager::k)
 
 } // namespace dcpp
 

=== modified file 'dcpp/SettingsManager.h'
--- dcpp/SettingsManager.h	2011-10-22 16:41:13 +0000
+++ dcpp/SettingsManager.h	2011-10-25 18:07:46 +0000
@@ -206,6 +206,14 @@
 		isSet[key] = true;
 	}
 
+	const string& getDefault(StrSetting key) const {
+		return strDefaults[key - STR_FIRST];
+	}
+
+	int getDefault(IntSetting key) const {
+		return intDefaults[key - INT_FIRST];
+	}
+
 	void setDefault(StrSetting key, string const& value) {
 		strDefaults[key - STR_FIRST] = value;
 	}

=== modified file 'dcpp/Util.cpp'
--- dcpp/Util.cpp	2011-10-22 16:41:13 +0000
+++ dcpp/Util.cpp	2011-10-25 18:07:46 +0000
@@ -553,7 +553,7 @@
 }
 
 string Util::getLocalIp() {
-	auto bindAddr = CONNSETTING(BIND_ADDRESS);
+	const auto& bindAddr = ConnectivityManager::getInstance()->get(SettingsManager::BIND_ADDRESS, false);
 	if(!bindAddr.empty()) {
 		return bindAddr;
 	}

=== modified file 'win32/HubFrame.cpp'
--- win32/HubFrame.cpp	2011-10-22 16:41:13 +0000
+++ win32/HubFrame.cpp	2011-10-25 18:07:46 +0000
@@ -23,11 +23,12 @@
 #include <dcpp/AdcHub.h>
 #include <dcpp/ChatMessage.h>
 #include <dcpp/ClientManager.h>
+#include <dcpp/ConnectionManager.h>
+#include <dcpp/ConnectivityManager.h>
+#include <dcpp/FavoriteManager.h>
 #include <dcpp/LogManager.h>
+#include <dcpp/SearchManager.h>
 #include <dcpp/User.h>
-#include <dcpp/FavoriteManager.h>
-#include <dcpp/ConnectionManager.h>
-#include <dcpp/SearchManager.h>
 #include <dcpp/version.h>
 #include <dcpp/WindowInfo.h>
 
@@ -735,7 +736,7 @@
 	int image = identity.isBot() ? WinUtil::USER_ICON_BOT : identity.isAway() ? WinUtil::USER_ICON_AWAY : WinUtil::USER_ICON;
 	image *= WinUtil::USER_ICON_MOD_START * WinUtil::USER_ICON_MOD_START;
 
-	if(SETTING(INCOMING_CONNECTIONS) == SettingsManager::INCOMING_FIREWALL_PASSIVE &&
+	if(CONNSETTING(INCOMING_CONNECTIONS) == SettingsManager::INCOMING_FIREWALL_PASSIVE &&
 		!identity.isBot() && !identity.isTcpActive() && !identity.supports(AdcHub::NAT0_FEATURE))
 	{
 		// Users we can't connect to

=== modified file 'win32/Mapper_MiniUPnPc.cpp'
--- win32/Mapper_MiniUPnPc.cpp	2011-10-22 16:41:13 +0000
+++ win32/Mapper_MiniUPnPc.cpp	2011-10-25 18:07:46 +0000
@@ -38,7 +38,7 @@
 	if(!url.empty())
 		return true;
 
-	auto bindAddr = CONNSETTING(BIND_ADDRESS);
+	const auto& bindAddr = ConnectivityManager::getInstance()->get(SettingsManager::BIND_ADDRESS, false);
 
 	UPNPDev* devices = upnpDiscover(2000, bindAddr.empty() ? nullptr : bindAddr.c_str(), 0, 0, 0, 0);
 	if(!devices)