summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/ObjectAdapterI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/ObjectAdapterI.cpp')
-rw-r--r--cpp/src/Ice/ObjectAdapterI.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp
index 63c783b7164..415c25d7249 100644
--- a/cpp/src/Ice/ObjectAdapterI.cpp
+++ b/cpp/src/Ice/ObjectAdapterI.cpp
@@ -19,7 +19,7 @@
#include <Ice/Exception.h>
#include <Ice/Properties.h>
#include <Ice/Functional.h>
-
+
#ifdef WIN32
# include <sys/timeb.h>
#else
@@ -353,15 +353,24 @@ Ice::ObjectAdapterI::~ObjectAdapterI()
deactivate();
}
}
-
+
ObjectPrx
Ice::ObjectAdapterI::newProxy(const string& ident)
{
vector<EndpointPtr> endpoints;
transform(_collectorFactories.begin(), _collectorFactories.end(), back_inserter(endpoints),
Ice::constMemFun(&CollectorFactory::endpoint));
-
- ReferencePtr reference = new Reference(_instance, ident, "", Reference::ModeTwoway, false, endpoints, endpoints);
+
+ // ASN: This is a bandaid
+ bool makeSecure = false;
+ size_t numSecureEndpoints = count_if(endpoints.begin(), endpoints.end(), Ice::constMemFun(&Endpoint::secure));
+
+ if (numSecureEndpoints >= endpoints.size())
+ {
+ makeSecure = true;
+ }
+
+ ReferencePtr reference = new Reference(_instance, ident, "", Reference::ModeTwoway, makeSecure /* false */, endpoints, endpoints);
return _instance->proxyFactory()->referenceToProxy(reference);
}