summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/RegistryI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceGrid/RegistryI.cpp')
-rw-r--r--cpp/src/IceGrid/RegistryI.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/cpp/src/IceGrid/RegistryI.cpp b/cpp/src/IceGrid/RegistryI.cpp
index fb31d8d588b..d246b26dd9c 100644
--- a/cpp/src/IceGrid/RegistryI.cpp
+++ b/cpp/src/IceGrid/RegistryI.cpp
@@ -118,6 +118,19 @@ private:
ProcessPtr _origProcess;
};
+Ice::IPConnectionInfoPtr
+getIPConnectionInfo(const Ice::ConnectionInfoPtr& info)
+{
+ for(Ice::ConnectionInfoPtr p = info; p; p = p->underlying)
+ {
+ Ice::IPConnectionInfoPtr ipInfo = Ice::IPConnectionInfoPtr::dynamicCast(p);
+ if(ipInfo)
+ {
+ return ipInfo;
+ }
+ }
+ return ICE_NULLPTR;
+}
ProcessI::ProcessI(const RegistryIPtr& registry, const ProcessPtr& origProcess) :
_registry(registry),
@@ -1338,10 +1351,11 @@ RegistryI::getSSLInfo(const ConnectionPtr& connection, string& userDN)
throw exc;
}
- sslinfo.remotePort = info->remotePort;
- sslinfo.remoteHost = info->remoteAddress;
- sslinfo.localPort = info->localPort;
- sslinfo.localHost = info->localAddress;
+ Ice::IPConnectionInfoPtr ipInfo = getIPConnectionInfo(info);
+ sslinfo.remotePort = ipInfo->remotePort;
+ sslinfo.remoteHost = ipInfo->remoteAddress;
+ sslinfo.localPort = ipInfo->localPort;
+ sslinfo.localHost = ipInfo->localAddress;
sslinfo.cipher = info->cipher;
sslinfo.certs = info->certs;
if(info->certs.size() > 0)