summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/DefaultsAndOverrides.cpp
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2014-08-07 12:18:42 -0230
committerDwayne Boone <dwayne@zeroc.com>2014-08-07 12:18:42 -0230
commit232fa424a7339659b6ad2cd02fbfe89420457601 (patch)
tree978d9e9286c2915b771f8bea019276ab216eecc4 /cpp/src/Ice/DefaultsAndOverrides.cpp
parentWindows SSL SChannel implementation & OS X Secure Transport fixes. (diff)
downloadice-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.cpp29
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) =