diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2014-08-07 12:18:42 -0230 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2014-08-07 12:18:42 -0230 |
commit | 232fa424a7339659b6ad2cd02fbfe89420457601 (patch) | |
tree | 978d9e9286c2915b771f8bea019276ab216eecc4 /cpp/src/Ice/DefaultsAndOverrides.cpp | |
parent | Windows SSL SChannel implementation & OS X Secure Transport fixes. (diff) | |
download | ice-232fa424a7339659b6ad2cd02fbfe89420457601.tar.bz2 ice-232fa424a7339659b6ad2cd02fbfe89420457601.tar.xz ice-232fa424a7339659b6ad2cd02fbfe89420457601.zip |
ICE-5457 added ability to set source address for connections
Diffstat (limited to 'cpp/src/Ice/DefaultsAndOverrides.cpp')
-rw-r--r-- | cpp/src/Ice/DefaultsAndOverrides.cpp | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/cpp/src/Ice/DefaultsAndOverrides.cpp b/cpp/src/Ice/DefaultsAndOverrides.cpp index 2690f4d13b3..8df552d9d20 100644 --- a/cpp/src/Ice/DefaultsAndOverrides.cpp +++ b/cpp/src/Ice/DefaultsAndOverrides.cpp @@ -10,7 +10,6 @@ #include <IceUtil/DisableWarnings.h> #include <Ice/DefaultsAndOverrides.h> #include <Ice/Properties.h> -#include <Ice/Network.h> #include <Ice/LocalException.h> using namespace std; @@ -36,7 +35,27 @@ IceInternal::DefaultsAndOverrides::DefaultsAndOverrides(const PropertiesPtr& pro const_cast<string&>(defaultHost) = properties->getProperty("Ice.Default.Host"); string value; - + +#ifdef ICE_OS_WINRT + const_cast<Address&>(defaultSourceAddress) = getInvalidAddress(); +#else + value = properties->getProperty("Ice.Default.SourceAddress"); + if(!value.empty()) + { + const_cast<Address&>(defaultSourceAddress) = getNumericAddress(value); + if(!isAddressValid(defaultSourceAddress)) + { + InitializationException ex(__FILE__, __LINE__); + ex.reason = "invalid IP address set for Ice.Default.SourceAddress: `" + value + "'"; + throw ex; + } + } + else + { + const_cast<Address&>(defaultSourceAddress) = getInvalidAddress(); + } +#endif + value = properties->getProperty("Ice.Override.Timeout"); if(!value.empty()) { @@ -79,7 +98,7 @@ IceInternal::DefaultsAndOverrides::DefaultsAndOverrides(const PropertiesPtr& pro if(value == "Random") { defaultEndpointSelection = Random; - } + } else if(value == "Ordered") { defaultEndpointSelection = Ordered; @@ -91,10 +110,10 @@ IceInternal::DefaultsAndOverrides::DefaultsAndOverrides(const PropertiesPtr& pro throw ex; } - const_cast<int&>(defaultInvocationTimeout) = + const_cast<int&>(defaultInvocationTimeout) = properties->getPropertyAsIntWithDefault("Ice.Default.InvocationTimeout", -1); - const_cast<int&>(defaultLocatorCacheTimeout) = + const_cast<int&>(defaultLocatorCacheTimeout) = properties->getPropertyAsIntWithDefault("Ice.Default.LocatorCacheTimeout", -1); const_cast<bool&>(defaultPreferSecure) = |