diff options
author | Benoit Foucher <benoit@zeroc.com> | 2017-04-10 19:33:17 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2017-04-10 19:33:17 +0200 |
commit | 1fa97b799b91fa6b0842e3267fec3d6e3a240df5 (patch) | |
tree | 1bc3abfddbcb66b51c776da15e2d88586ca2bbf4 /cpp/src/Ice/ConnectionFactory.cpp | |
parent | Fix (ICE-7771) - UWP build fails, missing targets file (diff) | |
download | ice-1fa97b799b91fa6b0842e3267fec3d6e3a240df5.tar.bz2 ice-1fa97b799b91fa6b0842e3267fec3d6e3a240df5.tar.xz ice-1fa97b799b91fa6b0842e3267fec3d6e3a240df5.zip |
Fixed ICE-7755 - listen on all IPs associated with a DNS name
Diffstat (limited to 'cpp/src/Ice/ConnectionFactory.cpp')
-rw-r--r-- | cpp/src/Ice/ConnectionFactory.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/cpp/src/Ice/ConnectionFactory.cpp b/cpp/src/Ice/ConnectionFactory.cpp index 51f2c58cfb7..0858c97a556 100644 --- a/cpp/src/Ice/ConnectionFactory.cpp +++ b/cpp/src/Ice/ConnectionFactory.cpp @@ -1255,10 +1255,25 @@ IceInternal::IncomingConnectionFactory::waitUntilFinished() } } +bool +IceInternal::IncomingConnectionFactory::isLocal(const EndpointIPtr& endpoint) const +{ + if(_publishedEndpoint && endpoint->equivalent(_publishedEndpoint)) + { + return true; + } + IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); + return endpoint->equivalent(_endpoint); +} + EndpointIPtr IceInternal::IncomingConnectionFactory::endpoint() const { - // No mutex protection necessary, _endpoint is immutable. + if(_publishedEndpoint) + { + return _publishedEndpoint; + } + IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); return _endpoint; } @@ -1561,10 +1576,12 @@ IceInternal::IncomingConnectionFactory::connectionStartFailed(const Ice::Connect // IceInternal::IncomingConnectionFactory::IncomingConnectionFactory(const InstancePtr& instance, const EndpointIPtr& endpoint, + const EndpointIPtr& publishedEndpoint, const ObjectAdapterIPtr& adapter) : _instance(instance), _monitor(new FactoryACMMonitor(instance, dynamic_cast<ObjectAdapterI*>(adapter.get())->getACM())), _endpoint(endpoint), + _publishedEndpoint(publishedEndpoint), _acceptorStarted(false), _acceptorStopped(false), _adapter(adapter), |