summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2009-10-12 10:45:43 +0200
committerBenoit Foucher <benoit@zeroc.com>2009-10-12 10:45:43 +0200
commitf7ec04896f054614a1f08a66c4f7cf9fe71d8f6a (patch)
tree6d56b2613e3b5f15e7529dcc8afef495b9e566c7 /cpp/src
parentBug 4222 - cannot install to network drive (diff)
downloadice-f7ec04896f054614a1f08a66c4f7cf9fe71d8f6a.tar.bz2
ice-f7ec04896f054614a1f08a66c4f7cf9fe71d8f6a.tar.xz
ice-f7ec04896f054614a1f08a66c4f7cf9fe71d8f6a.zip
Added ConnectionInfo/EndpointInfo, bug 4280 & 3964
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Glacier2/SessionRouterI.cpp50
-rw-r--r--cpp/src/Ice/ConnectionI.cpp11
-rw-r--r--cpp/src/Ice/ConnectionI.h2
-rw-r--r--cpp/src/Ice/EndpointI.h2
-rw-r--r--cpp/src/Ice/Network.cpp64
-rw-r--r--cpp/src/Ice/Network.h2
-rw-r--r--cpp/src/Ice/OpaqueEndpointI.cpp43
-rw-r--r--cpp/src/Ice/OpaqueEndpointI.h18
-rw-r--r--cpp/src/Ice/TcpEndpointI.cpp46
-rw-r--r--cpp/src/Ice/TcpEndpointI.h18
-rw-r--r--cpp/src/Ice/TcpTransceiver.cpp10
-rw-r--r--cpp/src/Ice/TcpTransceiver.h1
-rw-r--r--cpp/src/Ice/Transceiver.h3
-rw-r--r--cpp/src/Ice/UdpEndpointI.cpp61
-rw-r--r--cpp/src/Ice/UdpEndpointI.h20
-rw-r--r--cpp/src/Ice/UdpTransceiver.cpp11
-rw-r--r--cpp/src/Ice/UdpTransceiver.h1
-rw-r--r--cpp/src/IceGrid/RegistryI.cpp62
-rw-r--r--cpp/src/IceSSL/.depend16
-rw-r--r--cpp/src/IceSSL/EndpointI.cpp46
-rw-r--r--cpp/src/IceSSL/EndpointI.h20
-rw-r--r--cpp/src/IceSSL/Makefile7
-rw-r--r--cpp/src/IceSSL/PluginI.cpp2
-rw-r--r--cpp/src/IceSSL/TransceiverI.cpp47
-rw-r--r--cpp/src/IceSSL/TransceiverI.h1
-rw-r--r--cpp/src/IceSSL/Util.cpp2
26 files changed, 362 insertions, 204 deletions
diff --git a/cpp/src/Glacier2/SessionRouterI.cpp b/cpp/src/Glacier2/SessionRouterI.cpp
index 4f9c8ddc39a..3db5b4bf209 100644
--- a/cpp/src/Glacier2/SessionRouterI.cpp
+++ b/cpp/src/Glacier2/SessionRouterI.cpp
@@ -15,7 +15,7 @@
#include <IceUtil/UUID.h>
-#include <IceSSL/Plugin.h>
+#include <IceSSL/IceSSL.h>
#include <Ice/Network.h>
using namespace std;
@@ -819,33 +819,21 @@ Glacier2::SessionRouterI::createSessionFromSecureConnection_async(
//
try
{
- IceSSL::ConnectionInfo info = IceSSL::getConnectionInfo(current.con);
- if(info.remoteAddr.ss_family == AF_UNSPEC)
+ IceSSL::SSLConnectionInfoPtr info = IceSSL::SSLConnectionInfoPtr::dynamicCast(current.con->getInfo());
+ if(!info)
{
- //
- // The remote address may not be available on Windows XP SP2 when using IPv6.
- //
- sslinfo.remotePort = 0;
- sslinfo.remoteHost = "";
- }
- else
- {
- sslinfo.remotePort = IceInternal::getPort(info.remoteAddr);
- sslinfo.remoteHost = IceInternal::inetAddrToString(info.remoteAddr);
+ amdCB->ice_exception(PermissionDeniedException("not ssl connection"));
+ return;
}
- sslinfo.localPort = IceInternal::getPort(info.localAddr);
- sslinfo.localHost = IceInternal::inetAddrToString(info.localAddr);
-
- sslinfo.cipher = info.cipher;
-
- if(info.certs.size() > 0)
+ sslinfo.remotePort = info->remotePort;
+ sslinfo.remoteHost = info->remoteAddress;
+ sslinfo.localPort = info->localPort;
+ sslinfo.localHost = info->localAddress;
+ sslinfo.cipher = info->cipher;
+ sslinfo.certs = info->certs;
+ if(info->certs.size() > 0)
{
- sslinfo.certs.resize(info.certs.size());
- for(unsigned int i = 0; i < info.certs.size(); ++i)
- {
- sslinfo.certs[i] = info.certs[i]->encode();
- }
- userDN = info.certs[0]->getSubjectDN();
+ userDN = IceSSL::Certificate::decode(info->certs[0])->getSubjectDN();
}
if(_instance->properties()->getPropertyAsInt("Glacier2.AddSSLContext") > 0)
@@ -860,20 +848,20 @@ Glacier2::SessionRouterI::createSessionFromSecureConnection_async(
os << sslinfo.localPort;
sslCtx["_SSL.Local.Port"] = os.str();
sslCtx["_SSL.Local.Host"] = sslinfo.localHost;
- if(info.certs.size() > 0)
+ if(info->certs.size() > 0)
{
- sslCtx["_SSL.PeerCert"] = info.certs[0]->encode();
+ sslCtx["_SSL.PeerCert"] = info->certs[0];
}
}
}
- catch(const IceSSL::ConnectionInvalidException&)
+ catch(const IceSSL::CertificateEncodingException&)
{
- amdCB->ice_exception(PermissionDeniedException("not ssl connection"));
+ amdCB->ice_exception(PermissionDeniedException("certificate encoding exception"));
return;
}
- catch(const IceSSL::CertificateEncodingException&)
+ catch(const Ice::LocalException&)
{
- amdCB->ice_exception(PermissionDeniedException("certificate encoding exception"));
+ amdCB->ice_exception(PermissionDeniedException("connection exception"));
return;
}
diff --git a/cpp/src/Ice/ConnectionI.cpp b/cpp/src/Ice/ConnectionI.cpp
index 96952c5bf3a..94303438497 100644
--- a/cpp/src/Ice/ConnectionI.cpp
+++ b/cpp/src/Ice/ConnectionI.cpp
@@ -1465,6 +1465,17 @@ Ice::ConnectionI::timeout() const
return _endpoint->timeout(); // No mutex lock, _endpoint is immutable.
}
+ConnectionInfoPtr
+Ice::ConnectionI::getInfo() const
+{
+ IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
+ if(_exception.get())
+ {
+ _exception->ice_throw();
+ }
+ return _transceiver->getInfo();
+}
+
//
// Only used by the SSL plug-in.
//
diff --git a/cpp/src/Ice/ConnectionI.h b/cpp/src/Ice/ConnectionI.h
index 3d2d857695d..c13ae288561 100644
--- a/cpp/src/Ice/ConnectionI.h
+++ b/cpp/src/Ice/ConnectionI.h
@@ -132,7 +132,7 @@ public:
virtual std::string type() const; // From Connection.
virtual Ice::Int timeout() const; // From Connection.
-
+ virtual ConnectionInfoPtr getInfo() const; // From Connection
// SSL plug-in needs to be able to get the transceiver.
IceInternal::TransceiverPtr getTransceiver() const;
diff --git a/cpp/src/Ice/EndpointI.h b/cpp/src/Ice/EndpointI.h
index a2e616ca176..2dc851f4f42 100644
--- a/cpp/src/Ice/EndpointI.h
+++ b/cpp/src/Ice/EndpointI.h
@@ -45,7 +45,7 @@ public:
};
typedef IceUtil::Handle<EndpointI_connectors> EndpointI_connectorsPtr;
-class ICE_API EndpointI : public virtual Ice::Endpoint
+class ICE_API EndpointI : public Ice::Endpoint
{
public:
diff --git a/cpp/src/Ice/Network.cpp b/cpp/src/Ice/Network.cpp
index fa16f33d4ea..80eb685b413 100644
--- a/cpp/src/Ice/Network.cpp
+++ b/cpp/src/Ice/Network.cpp
@@ -1743,6 +1743,41 @@ IceInternal::fdToString(SOCKET fd)
return addressesToString(localAddr, remoteAddr, peerConnected);
};
+void
+IceInternal::fdToAddressAndPort(SOCKET fd, string& localAddress, int& localPort, string& remoteAddress, int& remotePort)
+{
+ if(fd == INVALID_SOCKET)
+ {
+ localAddress.clear();
+ remoteAddress.clear();
+ localPort = -1;
+ remotePort = -1;
+ return;
+ }
+
+ struct sockaddr_storage localAddr;
+ fdToLocalAddress(fd, localAddr);
+ addrToAddressAndPort(localAddr, localAddress, localPort);
+
+ struct sockaddr_storage remoteAddr;
+ if(fdToRemoteAddress(fd, remoteAddr))
+ {
+ addrToAddressAndPort(remoteAddr, remoteAddress, remotePort);
+ }
+ else
+ {
+ remoteAddress.clear();
+ remotePort = -1;
+ }
+}
+
+void
+IceInternal::addrToAddressAndPort(const struct sockaddr_storage& addr, string& address, int& port)
+{
+ address = inetAddrToString(addr);
+ port = getPort(addr);
+}
+
std::string
IceInternal::addressesToString(const struct sockaddr_storage& localAddr, const struct sockaddr_storage& remoteAddr,
bool peerConnected)
@@ -1807,6 +1842,10 @@ IceInternal::inetAddrToString(const struct sockaddr_storage& ss)
{
size = sizeof(sockaddr_in6);
}
+ else
+ {
+ return "";
+ }
char namebuf[1024];
namebuf[0] = '\0';
@@ -1819,17 +1858,7 @@ IceInternal::addrToString(const struct sockaddr_storage& addr)
{
ostringstream s;
string port;
- s << inetAddrToString(addr) << ':';
- if(addr.ss_family == AF_INET)
- {
- const struct sockaddr_in* addrin = reinterpret_cast<const sockaddr_in*>(&addr);
- s << ntohs(addrin->sin_port);
- }
- else
- {
- const struct sockaddr_in6* addrin = reinterpret_cast<const sockaddr_in6*>(&addr);
- s << ntohs(addrin->sin6_port);
- }
+ s << inetAddrToString(addr) << ':' << getPort(addr);
return s.str();
}
@@ -1840,10 +1869,14 @@ IceInternal::isMulticast(const struct sockaddr_storage& addr)
{
return IN_MULTICAST(ntohl(reinterpret_cast<const struct sockaddr_in*>(&addr)->sin_addr.s_addr));
}
- else
+ else if(addr.ss_family == AF_INET6)
{
return IN6_IS_ADDR_MULTICAST(&reinterpret_cast<const struct sockaddr_in6*>(&addr)->sin6_addr);
}
+ else
+ {
+ return false;
+ }
}
int
@@ -1853,10 +1886,14 @@ IceInternal::getPort(const struct sockaddr_storage& addr)
{
return ntohs(reinterpret_cast<const sockaddr_in*>(&addr)->sin_port);
}
- else
+ else if(addr.ss_family == AF_INET6)
{
return ntohs(reinterpret_cast<const sockaddr_in6*>(&addr)->sin6_port);
}
+ else
+ {
+ return -1;
+ }
}
void
@@ -1868,6 +1905,7 @@ IceInternal::setPort(struct sockaddr_storage& addr, int port)
}
else
{
+ assert(addr.ss_family == AF_INET6);
reinterpret_cast<sockaddr_in6*>(&addr)->sin6_port = htons(port);
}
}
diff --git a/cpp/src/Ice/Network.h b/cpp/src/Ice/Network.h
index 7ad2de80828..376f6ecbd4e 100644
--- a/cpp/src/Ice/Network.h
+++ b/cpp/src/Ice/Network.h
@@ -181,6 +181,8 @@ ICE_API void createPipe(SOCKET fds[2]);
ICE_API std::string errorToStringDNS(int);
ICE_API std::string fdToString(SOCKET);
+ICE_API void fdToAddressAndPort(SOCKET, std::string&, int&, std::string&, int&);
+ICE_API void addrToAddressAndPort(const struct sockaddr_storage&, std::string&, int&);
ICE_API std::string addressesToString(const struct sockaddr_storage&, const struct sockaddr_storage&, bool);
ICE_API void fdToLocalAddress(SOCKET, struct sockaddr_storage&);
ICE_API bool fdToRemoteAddress(SOCKET, struct sockaddr_storage&);
diff --git a/cpp/src/Ice/OpaqueEndpointI.cpp b/cpp/src/Ice/OpaqueEndpointI.cpp
index fd5d489f80f..3fc6d7b913c 100644
--- a/cpp/src/Ice/OpaqueEndpointI.cpp
+++ b/cpp/src/Ice/OpaqueEndpointI.cpp
@@ -144,6 +144,43 @@ IceInternal::OpaqueEndpointI::toString() const
return s.str();
}
+Ice::EndpointInfoPtr
+IceInternal::OpaqueEndpointI::getInfo() const
+{
+ class InfoI : public Ice::OpaqueEndpointInfo
+ {
+ public:
+
+ InfoI(Ice::Short type, Ice::ByteSeq rawByes) : OpaqueEndpointInfo(-1, false, rawBytes), _type(type)
+ {
+ }
+
+ virtual Ice::Short
+ type() const
+ {
+ return _type;
+ }
+
+ virtual bool
+ datagram() const
+ {
+ return false;
+ }
+
+ virtual bool
+ secure() const
+ {
+ return false;
+ }
+
+ private:
+
+ Ice::Short _type;
+ };
+
+ return new InfoI(_type, _rawBytes);
+}
+
Short
IceInternal::OpaqueEndpointI::type() const
{
@@ -192,12 +229,6 @@ IceInternal::OpaqueEndpointI::secure() const
return false;
}
-Ice::ByteSeq
-IceInternal::OpaqueEndpointI::rawBytes() const
-{
- return _rawBytes;
-}
-
TransceiverPtr
IceInternal::OpaqueEndpointI::transceiver(EndpointIPtr& endp) const
{
diff --git a/cpp/src/Ice/OpaqueEndpointI.h b/cpp/src/Ice/OpaqueEndpointI.h
index d79b2433e02..b89905563b0 100644
--- a/cpp/src/Ice/OpaqueEndpointI.h
+++ b/cpp/src/Ice/OpaqueEndpointI.h
@@ -16,27 +16,24 @@
namespace IceInternal
{
-class OpaqueEndpointI : public EndpointI, public Ice::OpaqueEndpoint
+class OpaqueEndpointI : public EndpointI
{
public:
OpaqueEndpointI(const ::std::string&);
OpaqueEndpointI(Ice::Short, BasicStream*);
- // From OpaqueEndpoint
- virtual std::string toString() const;
- virtual Ice::Int timeout() const;
- virtual bool compress() const;
- virtual bool datagram() const;
- virtual bool secure() const;
- virtual Ice::ByteSeq rawBytes() const;
-
- // From EndpointI
virtual void streamWrite(BasicStream*) const;
+ virtual std::string toString() const;
+ virtual Ice::EndpointInfoPtr getInfo() const;
virtual Ice::Short type() const;
+ virtual Ice::Int timeout() const;
virtual EndpointIPtr timeout(Ice::Int) const;
virtual EndpointIPtr connectionId(const ::std::string&) const;
+ virtual bool compress() const;
virtual EndpointIPtr compress(bool) const;
+ virtual bool datagram() const;
+ virtual bool secure() const;
virtual TransceiverPtr transceiver(EndpointIPtr&) const;
virtual std::vector<ConnectorPtr> connectors() const;
virtual void connectors_async(const EndpointI_connectorsPtr&) const;
@@ -70,6 +67,7 @@ public:
#endif
protected:
+
using EndpointI::connectors;
private:
diff --git a/cpp/src/Ice/TcpEndpointI.cpp b/cpp/src/Ice/TcpEndpointI.cpp
index 95c666a0580..9d8c761231f 100644
--- a/cpp/src/Ice/TcpEndpointI.cpp
+++ b/cpp/src/Ice/TcpEndpointI.cpp
@@ -226,6 +226,40 @@ IceInternal::TcpEndpointI::toString() const
return s.str();
}
+EndpointInfoPtr
+IceInternal::TcpEndpointI::getInfo() const
+{
+ class InfoI : public Ice::TcpEndpointInfo
+ {
+ public:
+
+ InfoI(Ice::Int to, bool comp, const string& host, Ice::Int port) :
+ TcpEndpointInfo(to, comp, host, port)
+ {
+ }
+
+ virtual Ice::Short
+ type() const
+ {
+ return TcpEndpointType;
+ }
+
+ virtual bool
+ datagram() const
+ {
+ return false;
+ }
+
+ virtual bool
+ secure() const
+ {
+ return false;
+ }
+ };
+
+ return new InfoI(_timeout, _compress, _host, _port);
+}
+
Short
IceInternal::TcpEndpointI::type() const
{
@@ -295,18 +329,6 @@ IceInternal::TcpEndpointI::secure() const
return false;
}
-string
-IceInternal::TcpEndpointI::host() const
-{
- return _host;
-}
-
-Ice::Int
-IceInternal::TcpEndpointI::port() const
-{
- return _port;
-}
-
TransceiverPtr
IceInternal::TcpEndpointI::transceiver(EndpointIPtr& endp) const
{
diff --git a/cpp/src/Ice/TcpEndpointI.h b/cpp/src/Ice/TcpEndpointI.h
index a905d6a5ffa..1bf7829b397 100644
--- a/cpp/src/Ice/TcpEndpointI.h
+++ b/cpp/src/Ice/TcpEndpointI.h
@@ -18,7 +18,7 @@ namespace IceInternal
const Ice::Short TcpEndpointType = 1;
-class TcpEndpointI : public EndpointI, public Ice::TcpEndpoint
+class TcpEndpointI : public EndpointI
{
public:
@@ -26,21 +26,17 @@ public:
TcpEndpointI(const InstancePtr&, const std::string&, bool);
TcpEndpointI(BasicStream*);
- // From TcpEndpoint
- virtual std::string toString() const;
- virtual Ice::Int timeout() const;
- virtual bool compress() const;
- virtual bool datagram() const;
- virtual bool secure() const;
- virtual std::string host() const;
- virtual Ice::Int port() const;
-
- // From EndpointI
virtual void streamWrite(BasicStream*) const;
+ virtual std::string toString() const;
+ virtual Ice::EndpointInfoPtr getInfo() const;
virtual Ice::Short type() const;
+ virtual Ice::Int timeout() const;
virtual EndpointIPtr timeout(Ice::Int) const;
virtual EndpointIPtr connectionId(const ::std::string&) const;
+ virtual bool compress() const;
virtual EndpointIPtr compress(bool) const;
+ virtual bool datagram() const;
+ virtual bool secure() const;
virtual TransceiverPtr transceiver(EndpointIPtr&) const;
virtual std::vector<ConnectorPtr> connectors() const;
virtual void connectors_async(const EndpointI_connectorsPtr&) const;
diff --git a/cpp/src/Ice/TcpTransceiver.cpp b/cpp/src/Ice/TcpTransceiver.cpp
index 88efe8c0dc4..959c3ce6f87 100644
--- a/cpp/src/Ice/TcpTransceiver.cpp
+++ b/cpp/src/Ice/TcpTransceiver.cpp
@@ -8,6 +8,7 @@
// **********************************************************************
#include <Ice/TcpTransceiver.h>
+#include <Ice/Connection.h>
#include <Ice/Instance.h>
#include <Ice/TraceLevels.h>
#include <Ice/LoggerUtil.h>
@@ -453,6 +454,15 @@ IceInternal::TcpTransceiver::toString() const
return _desc;
}
+Ice::ConnectionInfoPtr
+IceInternal::TcpTransceiver::getInfo() const
+{
+ assert(_fd != INVALID_SOCKET);
+ Ice::TcpConnectionInfoPtr info = new Ice::TcpConnectionInfo();
+ fdToAddressAndPort(_fd, info->localAddress, info->localPort, info->remoteAddress, info->remotePort);
+ return info;
+}
+
void
IceInternal::TcpTransceiver::checkSendSize(const Buffer& buf, size_t messageSizeMax)
{
diff --git a/cpp/src/Ice/TcpTransceiver.h b/cpp/src/Ice/TcpTransceiver.h
index 7c1c80c94b7..2f131531d0a 100644
--- a/cpp/src/Ice/TcpTransceiver.h
+++ b/cpp/src/Ice/TcpTransceiver.h
@@ -50,6 +50,7 @@ public:
#endif
virtual std::string type() const;
virtual std::string toString() const;
+ virtual Ice::ConnectionInfoPtr getInfo() const;
virtual void checkSendSize(const Buffer&, size_t);
private:
diff --git a/cpp/src/Ice/Transceiver.h b/cpp/src/Ice/Transceiver.h
index 56b23a61bcf..2c6bad54e2a 100644
--- a/cpp/src/Ice/Transceiver.h
+++ b/cpp/src/Ice/Transceiver.h
@@ -12,6 +12,7 @@
#include <IceUtil/Shared.h>
#include <Ice/TransceiverF.h>
+#include <Ice/ConnectionF.h>
#include <Ice/Network.h>
namespace IceInternal
@@ -36,7 +37,7 @@ public:
#endif
virtual std::string type() const = 0;
virtual std::string toString() const = 0;
-
+ virtual Ice::ConnectionInfoPtr getInfo() const = 0;
virtual void checkSendSize(const Buffer&, size_t) = 0;
};
diff --git a/cpp/src/Ice/UdpEndpointI.cpp b/cpp/src/Ice/UdpEndpointI.cpp
index 041733e3b66..bbd273cfa54 100644
--- a/cpp/src/Ice/UdpEndpointI.cpp
+++ b/cpp/src/Ice/UdpEndpointI.cpp
@@ -432,6 +432,43 @@ IceInternal::UdpEndpointI::toString() const
return s.str();
}
+EndpointInfoPtr
+IceInternal::UdpEndpointI::getInfo() const
+{
+ class InfoI : public Ice::UdpEndpointInfo
+ {
+ public:
+
+ InfoI(bool comp, const string& host, Ice::Int port, Ice::Byte protocolMajor, Ice::Byte protocolMinor,
+ Ice::Byte encodingMajor, Ice::Byte encodingMinor, const std::string& mcastInterface, Ice::Int mcastTtl) :
+ UdpEndpointInfo(-1, comp, host, port, protocolMajor, protocolMinor, encodingMajor, encodingMinor,
+ mcastInterface, mcastTtl)
+ {
+ }
+
+ virtual Ice::Short
+ type() const
+ {
+ return UdpEndpointType;
+ }
+
+ virtual bool
+ datagram() const
+ {
+ return true;
+ }
+
+ virtual bool
+ secure() const
+ {
+ return false;
+ }
+ };
+
+ return new InfoI(_compress, _host, _port, _protocolMajor, _protocolMinor, _encodingMajor, _encodingMinor,
+ _mcastInterface, _mcastTtl);
+}
+
Short
IceInternal::UdpEndpointI::type() const
{
@@ -496,30 +533,6 @@ IceInternal::UdpEndpointI::secure() const
return false;
}
-string
-IceInternal::UdpEndpointI::host() const
-{
- return _host;
-}
-
-Ice::Int
-IceInternal::UdpEndpointI::port() const
-{
- return _port;
-}
-
-string
-IceInternal::UdpEndpointI::mcastInterface() const
-{
- return _mcastInterface;
-}
-
-Ice::Int
-IceInternal::UdpEndpointI::mcastTtl() const
-{
- return _mcastTtl;
-}
-
TransceiverPtr
IceInternal::UdpEndpointI::transceiver(EndpointIPtr& endp) const
{
diff --git a/cpp/src/Ice/UdpEndpointI.h b/cpp/src/Ice/UdpEndpointI.h
index eb924d955d3..1331d740085 100644
--- a/cpp/src/Ice/UdpEndpointI.h
+++ b/cpp/src/Ice/UdpEndpointI.h
@@ -18,7 +18,7 @@ namespace IceInternal
const Ice::Short UdpEndpointType = 3;
-class UdpEndpointI : public EndpointI, public Ice::UdpEndpoint
+class UdpEndpointI : public EndpointI
{
public:
@@ -27,23 +27,17 @@ public:
UdpEndpointI(const InstancePtr&, const std::string&, bool);
UdpEndpointI(BasicStream*);
- // From UdpEndpoint
- virtual std::string toString() const;
- virtual Ice::Int timeout() const;
- virtual bool compress() const;
- virtual bool datagram() const;
- virtual bool secure() const;
- virtual std::string host() const;
- virtual Ice::Int port() const;
- virtual std::string mcastInterface() const;
- virtual Ice::Int mcastTtl() const;
-
- // From EndpointI
virtual void streamWrite(BasicStream*) const;
+ virtual std::string toString() const;
+ virtual Ice::EndpointInfoPtr getInfo() const;
virtual Ice::Short type() const;
+ virtual Ice::Int timeout() const;
virtual EndpointIPtr timeout(Ice::Int) const;
virtual EndpointIPtr connectionId(const ::std::string&) const;
+ virtual bool compress() const;
virtual EndpointIPtr compress(bool) const;
+ virtual bool datagram() const;
+ virtual bool secure() const;
virtual TransceiverPtr transceiver(EndpointIPtr&) const;
virtual std::vector<ConnectorPtr> connectors() const;
virtual void connectors_async(const EndpointI_connectorsPtr&) const;
diff --git a/cpp/src/Ice/UdpTransceiver.cpp b/cpp/src/Ice/UdpTransceiver.cpp
index 8196391e00b..fbf00a1048a 100644
--- a/cpp/src/Ice/UdpTransceiver.cpp
+++ b/cpp/src/Ice/UdpTransceiver.cpp
@@ -16,6 +16,7 @@
#endif
#include <Ice/UdpTransceiver.h>
+#include <Ice/Connection.h>
#include <Ice/Instance.h>
#include <Ice/TraceLevels.h>
#include <Ice/LoggerUtil.h>
@@ -451,6 +452,16 @@ IceInternal::UdpTransceiver::toString() const
}
}
+Ice::ConnectionInfoPtr
+IceInternal::UdpTransceiver::getInfo() const
+{
+ assert(_fd != INVALID_SOCKET);
+ Ice::UdpConnectionInfoPtr info = new Ice::UdpConnectionInfo();
+ fdToAddressAndPort(_fd, info->localAddress, info->localPort, info->remoteAddress, info->remotePort);
+ addrToAddressAndPort(_mcastAddr, info->mcastAddress, info->mcastPort);
+ return info;
+}
+
void
IceInternal::UdpTransceiver::checkSendSize(const Buffer& buf, size_t messageSizeMax)
{
diff --git a/cpp/src/Ice/UdpTransceiver.h b/cpp/src/Ice/UdpTransceiver.h
index 4eb1a14bfbe..f7c918184a8 100644
--- a/cpp/src/Ice/UdpTransceiver.h
+++ b/cpp/src/Ice/UdpTransceiver.h
@@ -54,6 +54,7 @@ public:
#endif
virtual std::string type() const;
virtual std::string toString() const;
+ virtual Ice::ConnectionInfoPtr getInfo() const;
virtual void checkSendSize(const Buffer&, size_t);
int effectivePort() const;
diff --git a/cpp/src/IceGrid/RegistryI.cpp b/cpp/src/IceGrid/RegistryI.cpp
index 0b4b88740fc..d3caad319de 100644
--- a/cpp/src/IceGrid/RegistryI.cpp
+++ b/cpp/src/IceGrid/RegistryI.cpp
@@ -14,7 +14,7 @@
#include <Ice/ProtocolPluginFacade.h> // Just to get the hostname
#include <IceStorm/Service.h>
-#include <IceSSL/Plugin.h>
+#include <IceSSL/IceSSL.h>
#include <Glacier2/PermissionsVerifier.h>
#include <IceGrid/TraceLevels.h>
@@ -1239,61 +1239,35 @@ RegistryI::getSSLInfo(const ConnectionPtr& connection, string& userDN)
Glacier2::SSLInfo sslinfo;
try
{
- IceSSL::ConnectionInfo info = IceSSL::getConnectionInfo(connection);
-
- if(info.remoteAddr.ss_family == AF_UNSPEC)
- {
- //
- // The remote address may not be available on Windows XP SP2 when using IPv6.
- //
- sslinfo.remotePort = 0;
- sslinfo.remoteHost = "";
- }
- else
- {
- if(info.remoteAddr.ss_family == AF_INET)
- {
- sslinfo.remotePort = ntohs(reinterpret_cast<sockaddr_in*>(&info.remoteAddr)->sin_port);
- }
- else
- {
- sslinfo.remotePort = ntohs(reinterpret_cast<sockaddr_in6*>(&info.remoteAddr)->sin6_port);
- }
- sslinfo.remoteHost = IceInternal::inetAddrToString(info.remoteAddr);
- }
-
- if(info.localAddr.ss_family == AF_INET)
+ IceSSL::SSLConnectionInfoPtr info = IceSSL::SSLConnectionInfoPtr::dynamicCast(connection->getInfo());
+ if(!info)
{
- sslinfo.localPort = ntohs(reinterpret_cast<sockaddr_in*>(&info.localAddr)->sin_port);
- }
- else
- {
- sslinfo.localPort = ntohs(reinterpret_cast<sockaddr_in6*>(&info.localAddr)->sin6_port);
+ PermissionDeniedException exc;
+ exc.reason = "not ssl connection";
+ throw exc;
}
- sslinfo.localHost = IceInternal::inetAddrToString(info.localAddr);
-
- sslinfo.cipher = info.cipher;
- if(!info.certs.empty())
+ sslinfo.remotePort = info->remotePort;
+ sslinfo.remoteHost = info->remoteAddress;
+ sslinfo.localPort = info->localPort;
+ sslinfo.localHost = info->localAddress;
+ sslinfo.cipher = info->cipher;
+ sslinfo.certs = info->certs;
+ if(info->certs.size() > 0)
{
- sslinfo.certs.resize(info.certs.size());
- for(unsigned int i = 0; i < info.certs.size(); ++i)
- {
- sslinfo.certs[i] = info.certs[i]->encode();
- }
- userDN = info.certs[0]->getSubjectDN();
+ userDN = IceSSL::Certificate::decode(info->certs[0])->getSubjectDN();
}
}
- catch(const IceSSL::ConnectionInvalidException&)
+ catch(const IceSSL::CertificateEncodingException&)
{
PermissionDeniedException exc;
- exc.reason = "not ssl connection";
+ exc.reason = "certificate encoding exception";
throw exc;
}
- catch(const IceSSL::CertificateEncodingException&)
+ catch(const Ice::LocalException&)
{
PermissionDeniedException exc;
- exc.reason = "certificate encoding exception";
+ exc.reason = "connection exception";
throw exc;
}
diff --git a/cpp/src/IceSSL/.depend b/cpp/src/IceSSL/.depend
index 37023d70395..3c528651773 100644
--- a/cpp/src/IceSSL/.depend
+++ b/cpp/src/IceSSL/.depend
@@ -1,13 +1,13 @@
AcceptorI$(OBJEXT): AcceptorI.cpp ../IceSSL/AcceptorI.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h ../Ice/TransceiverF.h ../Ice/Acceptor.h ../Ice/AcceptorF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h ../IceSSL/InstanceF.h ../IceSSL/Instance.h ../IceSSL/UtilF.h $(includedir)/Ice/ProtocolPluginFacadeF.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h ../IceSSL/TrustManagerF.h ../IceSSL/TransceiverI.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../IceSSL/Util.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/IceUtil/StringUtil.h
Certificate$(OBJEXT): Certificate.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h ../IceSSL/Util.h ../IceSSL/UtilF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h ../IceSSL/RFC2253.h
-ConnectorI$(OBJEXT): ConnectorI.cpp ../IceSSL/ConnectorI.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h ../Ice/TransceiverF.h ../Ice/Connector.h ../Ice/ConnectorF.h ../IceSSL/InstanceF.h ../IceSSL/Instance.h ../IceSSL/UtilF.h $(includedir)/Ice/CommunicatorF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/ProtocolPluginFacadeF.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h ../IceSSL/TrustManagerF.h ../IceSSL/TransceiverI.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../IceSSL/EndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/InstanceF.h ../Ice/AcceptorF.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h $(includedir)/IceSSL/Endpoint.h ../IceSSL/Util.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/LoggerUtil.h
-Endpoint$(OBJEXT): Endpoint.cpp $(includedir)/IceSSL/Endpoint.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
-EndpointI$(OBJEXT): EndpointI.cpp ../IceSSL/EndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/InstanceF.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h $(includedir)/IceSSL/Endpoint.h ../IceSSL/InstanceF.h ../IceSSL/AcceptorI.h $(includedir)/Ice/LoggerF.h ../Ice/Acceptor.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h ../IceSSL/ConnectorI.h ../Ice/Connector.h ../IceSSL/TransceiverI.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../IceSSL/Instance.h ../IceSSL/UtilF.h $(includedir)/Ice/ProtocolPluginFacadeF.h ../IceSSL/TrustManagerF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/LocalException.h ../Ice/DefaultsAndOverrides.h ../Ice/DefaultsAndOverridesF.h
-Instance$(OBJEXT): Instance.cpp ../IceSSL/Instance.h ../IceSSL/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h ../IceSSL/UtilF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/LoggerF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/ProtocolPluginFacadeF.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h ../IceSSL/TrustManagerF.h ../IceSSL/EndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/InstanceF.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h $(includedir)/IceSSL/Endpoint.h ../IceSSL/Util.h ../IceSSL/TrustManager.h ../IceSSL/RFC2253.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/ProtocolPluginFacade.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/DisableWarnings.h
-PluginI$(OBJEXT): PluginI.cpp ../IceSSL/PluginI.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h ../IceSSL/InstanceF.h ../IceSSL/Instance.h ../IceSSL/UtilF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/ProtocolPluginFacadeF.h ../IceSSL/TrustManagerF.h ../IceSSL/TransceiverI.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h $(includedir)/Ice/LocalException.h ../Ice/ConnectionI.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ServantManagerF.h ../Ice/ConnectorF.h ../Ice/TraceLevelsF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h
-TransceiverI$(OBJEXT): TransceiverI.cpp ../IceSSL/TransceiverI.h ../IceSSL/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h ../IceSSL/Instance.h ../IceSSL/UtilF.h $(includedir)/Ice/ProtocolPluginFacadeF.h ../IceSSL/TrustManagerF.h ../IceSSL/Util.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/LocalException.h
+EndpointInfo$(OBJEXT): EndpointInfo.cpp $(includedir)/IceSSL/EndpointInfo.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
+ConnectionInfo$(OBJEXT): ConnectionInfo.cpp $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
+PluginI$(OBJEXT): PluginI.cpp ../IceSSL/PluginI.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h ../IceSSL/InstanceF.h ../IceSSL/Instance.h ../IceSSL/UtilF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/ProtocolPluginFacadeF.h ../IceSSL/TrustManagerF.h ../IceSSL/TransceiverI.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h $(includedir)/Ice/LocalException.h ../Ice/ConnectionI.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Connection.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ServantManagerF.h ../Ice/ConnectorF.h ../Ice/TraceLevelsF.h ../Ice/EventHandler.h ../Ice/EventHandlerF.h ../Ice/ThreadPoolF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h
+TransceiverI$(OBJEXT): TransceiverI.cpp ../IceSSL/TransceiverI.h ../IceSSL/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Protocol.h $(includedir)/IceSSL/Connection.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/Instance.h ../IceSSL/UtilF.h $(includedir)/Ice/ProtocolPluginFacadeF.h ../IceSSL/TrustManagerF.h ../IceSSL/Util.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/LocalException.h
Util$(OBJEXT): Util.cpp ../IceSSL/Util.h ../IceSSL/UtilF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/Protocol.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/IceUtil/DisableWarnings.h
RFC2253$(OBJEXT): RFC2253.cpp $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h ../IceSSL/RFC2253.h
TrustManager$(OBJEXT): TrustManager.cpp ../IceSSL/TrustManager.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h ../IceSSL/TrustManagerF.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h ../IceSSL/RFC2253.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h ../Ice/Network.h
-Endpoint.cpp: $(slicedir)/IceSSL/Endpoint.ice $(slicedir)/Ice/Endpoint.ice $(slicedir)/Ice/BuiltinSequences.ice $(slicedir)/Ice/EndpointF.ice
-../../../slice/IceSSL/Endpoint.ice: $(SLICE2CPP) $(SLICEPARSERLIB)
+EndpointInfo.cpp: $(slicedir)/IceSSL/EndpointInfo.ice $(slicedir)/Ice/Endpoint.ice $(slicedir)/Ice/BuiltinSequences.ice $(slicedir)/Ice/EndpointF.ice
+ConnectionInfo.cpp: $(slicedir)/IceSSL/ConnectionInfo.ice $(slicedir)/Ice/Connection.ice $(slicedir)/Ice/ObjectAdapterF.ice $(slicedir)/Ice/Identity.ice $(slicedir)/Ice/Endpoint.ice $(slicedir)/Ice/BuiltinSequences.ice $(slicedir)/Ice/EndpointF.ice
+../../../slice/IceSSL/EndpointInfo.ice: $(SLICE2CPP) $(SLICEPARSERLIB)
+../../../slice/IceSSL/ConnectionInfo.ice: $(SLICE2CPP) $(SLICEPARSERLIB)
diff --git a/cpp/src/IceSSL/EndpointI.cpp b/cpp/src/IceSSL/EndpointI.cpp
index f8966c7e172..c21db89353c 100644
--- a/cpp/src/IceSSL/EndpointI.cpp
+++ b/cpp/src/IceSSL/EndpointI.cpp
@@ -226,6 +226,40 @@ IceSSL::EndpointI::toString() const
return s.str();
}
+Ice::EndpointInfoPtr
+IceSSL::EndpointI::getInfo() const
+{
+ class InfoI : public IceSSL::SSLEndpointInfo
+ {
+ public:
+
+ InfoI(Ice::Int to, bool comp, const string& host, Ice::Int port) :
+ SSLEndpointInfo(to, comp, host, port)
+ {
+ }
+
+ virtual Ice::Short
+ type() const
+ {
+ return EndpointType;
+ }
+
+ virtual bool
+ datagram() const
+ {
+ return false;
+ }
+
+ virtual bool
+ secure() const
+ {
+ return true;
+ }
+ };
+
+ return new InfoI(_timeout, _compress, _host, _port);
+}
+
Short
IceSSL::EndpointI::type() const
{
@@ -295,18 +329,6 @@ IceSSL::EndpointI::secure() const
return true;
}
-string
-IceSSL::EndpointI::host() const
-{
- return _host;
-}
-
-Ice::Int
-IceSSL::EndpointI::port() const
-{
- return _port;
-}
-
IceInternal::TransceiverPtr
IceSSL::EndpointI::transceiver(IceInternal::EndpointIPtr& endp) const
{
diff --git a/cpp/src/IceSSL/EndpointI.h b/cpp/src/IceSSL/EndpointI.h
index 82a0e5efce8..61f1751d48c 100644
--- a/cpp/src/IceSSL/EndpointI.h
+++ b/cpp/src/IceSSL/EndpointI.h
@@ -12,15 +12,15 @@
#include <Ice/EndpointI.h>
#include <Ice/EndpointFactory.h>
-#include <IceSSL/Endpoint.h>
#include <IceSSL/InstanceF.h>
+#include <IceSSL/EndpointInfo.h>
namespace IceSSL
{
const Ice::Short EndpointType = 2;
-class EndpointI : public IceInternal::EndpointI, public SslEndpoint
+class EndpointI : public IceInternal::EndpointI
{
public:
@@ -28,21 +28,17 @@ public:
EndpointI(const InstancePtr&, const std::string&, bool);
EndpointI(const InstancePtr&, IceInternal::BasicStream*);
- // From SslEndpoint
- virtual std::string toString() const;
- virtual Ice::Int timeout() const;
- virtual bool compress() const;
- virtual bool datagram() const;
- virtual bool secure() const;
- virtual std::string host() const;
- virtual Ice::Int port() const;
-
- // From IceInternal::EndpointI
virtual void streamWrite(IceInternal::BasicStream*) const;
+ virtual std::string toString() const;
+ virtual Ice::EndpointInfoPtr getInfo() const;
virtual Ice::Short type() const;
+ virtual Ice::Int timeout() const;
virtual IceInternal::EndpointIPtr timeout(Ice::Int) const;
virtual IceInternal::EndpointIPtr connectionId(const ::std::string&) const;
+ virtual bool compress() const;
virtual IceInternal::EndpointIPtr compress(bool) const;
+ virtual bool datagram() const;
+ virtual bool secure() const;
virtual IceInternal::TransceiverPtr transceiver(IceInternal::EndpointIPtr&) const;
virtual std::vector<IceInternal::ConnectorPtr> connectors() const;
virtual void connectors_async(const IceInternal::EndpointI_connectorsPtr&) const;
diff --git a/cpp/src/IceSSL/Makefile b/cpp/src/IceSSL/Makefile
index 3bce8cbc258..8f4972096cb 100644
--- a/cpp/src/IceSSL/Makefile
+++ b/cpp/src/IceSSL/Makefile
@@ -1,3 +1,4 @@
+
# **********************************************************************
#
# Copyright (c) 2003-2009 ZeroC, Inc. All rights reserved.
@@ -18,7 +19,8 @@ TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(li
OBJS = AcceptorI.o \
Certificate.o \
ConnectorI.o \
- Endpoint.o \
+ EndpointInfo.o \
+ ConnectionInfo.o \
EndpointI.o \
Instance.o \
PluginI.o \
@@ -29,7 +31,8 @@ OBJS = AcceptorI.o \
SRCS = $(OBJS:.o=.cpp)
-SLICE_SRCS = $(SDIR)/Endpoint.ice
+SLICE_SRCS = $(SDIR)/EndpointInfo.ice \
+ $(SDIR)/ConnectionInfo.ice
HDIR = $(headerdir)/IceSSL
SDIR = $(slicedir)/IceSSL
diff --git a/cpp/src/IceSSL/PluginI.cpp b/cpp/src/IceSSL/PluginI.cpp
index e06cdb2eec9..67bf827d37e 100644
--- a/cpp/src/IceSSL/PluginI.cpp
+++ b/cpp/src/IceSSL/PluginI.cpp
@@ -108,7 +108,7 @@ ConnectionInvalidException::ice_throw() const
throw *this;
}
-ConnectionInfo
+IceSSL::ConnectionInfo
IceSSL::getConnectionInfo(const ConnectionPtr& connection)
{
Ice::ConnectionIPtr con = Ice::ConnectionIPtr::dynamicCast(connection);
diff --git a/cpp/src/IceSSL/TransceiverI.cpp b/cpp/src/IceSSL/TransceiverI.cpp
index f2fc567e1e8..28f59e93756 100644
--- a/cpp/src/IceSSL/TransceiverI.cpp
+++ b/cpp/src/IceSSL/TransceiverI.cpp
@@ -8,6 +8,7 @@
// **********************************************************************
#include <IceSSL/TransceiverI.h>
+#include <IceSSL/ConnectionInfo.h>
#include <IceSSL/Instance.h>
#include <IceSSL/Util.h>
#include <Ice/Communicator.h>
@@ -777,6 +778,50 @@ IceSSL::TransceiverI::toString() const
return _desc;
}
+Ice::ConnectionInfoPtr
+IceSSL::TransceiverI::getInfo() const
+{
+ assert(_fd != INVALID_SOCKET && _ssl != 0);
+
+ SSLConnectionInfoPtr info = new SSLConnectionInfo();
+ IceInternal::fdToAddressAndPort(_fd, info->localAddress, info->localPort, info->remoteAddress, info->remotePort);
+
+ //
+ // On the client side, SSL_get_peer_cert_chain returns the entire chain of certs.
+ // On the server side, the peer certificate must be obtained separately.
+ //
+ // Since we have no clear idea whether the connection is server or client side,
+ // the peer certificate is obtained separately and compared against the first
+ // certificate in the chain. If they are not the same, it is added to the chain.
+ //
+ X509* cert = SSL_get_peer_certificate(_ssl);
+ STACK_OF(X509)* chain = SSL_get_peer_cert_chain(_ssl);
+ if(cert != 0 && (chain == 0 || sk_X509_num(chain) == 0 || cert != sk_X509_value(chain, 0)))
+ {
+ CertificatePtr certificate = new Certificate(cert);
+ info->certs.push_back(certificate->encode());
+ }
+ else
+ {
+ X509_free(cert);
+ }
+
+ if(chain != 0)
+ {
+ for(int i = 0; i < sk_X509_num(chain); ++i)
+ {
+ //
+ // Duplicate the certificate since the stack comes straight from the SSL connection.
+ //
+ CertificatePtr certificate = new Certificate(X509_dup(sk_X509_value(chain, i)));
+ info->certs.push_back(certificate->encode());
+ }
+ }
+
+ info->cipher = SSL_get_cipher_name(_ssl); // Nothing needs to be free'd.
+ return info;
+}
+
void
IceSSL::TransceiverI::checkSendSize(const IceInternal::Buffer& buf, size_t messageSizeMax)
{
@@ -786,7 +831,7 @@ IceSSL::TransceiverI::checkSendSize(const IceInternal::Buffer& buf, size_t messa
}
}
-ConnectionInfo
+IceSSL::ConnectionInfo
IceSSL::TransceiverI::getConnectionInfo() const
{
//
diff --git a/cpp/src/IceSSL/TransceiverI.h b/cpp/src/IceSSL/TransceiverI.h
index f66a8b4ccb0..f852d7df7c6 100644
--- a/cpp/src/IceSSL/TransceiverI.h
+++ b/cpp/src/IceSSL/TransceiverI.h
@@ -55,6 +55,7 @@ public:
#endif
virtual std::string type() const;
virtual std::string toString() const;
+ virtual Ice::ConnectionInfoPtr getInfo() const;
virtual void checkSendSize(const IceInternal::Buffer&, size_t);
ConnectionInfo getConnectionInfo() const;
diff --git a/cpp/src/IceSSL/Util.cpp b/cpp/src/IceSSL/Util.cpp
index 9881cd3cb66..e472d1f2e4e 100644
--- a/cpp/src/IceSSL/Util.cpp
+++ b/cpp/src/IceSSL/Util.cpp
@@ -317,7 +317,7 @@ IceSSL::checkPath(string& path, const string& defaultDir, bool dir)
return false;
}
-ConnectionInfo
+IceSSL::ConnectionInfo
IceSSL::populateConnectionInfo(SSL* ssl, SOCKET fd, const string& adapterName, bool incoming)
{
ConnectionInfo info;