diff options
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/CHANGES | 24 | ||||
-rw-r--r-- | cpp/src/Ice/ObjectAdapterI.cpp | 18 | ||||
-rw-r--r-- | cpp/src/Ice/ObjectAdapterI.h | 4 |
3 files changed, 25 insertions, 21 deletions
diff --git a/cpp/CHANGES b/cpp/CHANGES index c384df18ea8..1328c8f3676 100644 --- a/cpp/CHANGES +++ b/cpp/CHANGES @@ -1,9 +1,13 @@ Changes since version 1.5.1 --------------------------- -- Added the object adapter property <name>.PublishedEndpoints, - which specifies endpoints to advertise in proxies created - by the adapter. +- The proxy returned by the object adapter operations addFacet and + addFacetWithUUID did not contain the facet. This required the + application to make an extra call to ice_newFacet in order to + obtain the correct proxy. This has been fixed. + +- Added the object adapter property <name>.PublishedEndpoints, which + specifies endpoints to advertise in proxies created by the adapter. - For WIN32, Thread::getThreadControl() set the thread id of the ThreadControl object to the current thread instead of the thread the @@ -19,12 +23,12 @@ Changes since version 1.5.1 - Exceptions raised while marshaling data for batch requests resulted in a connection deadlock. This has been fixed. -- Fixed a bug in slice2cs: the generated code was incorrect - for dictionaries with sequence value types, if that sequence - value type was mapped to an array. +- Fixed a bug in slice2cs: the generated code was incorrect for + dictionaries with sequence value types, if that sequence value type + was mapped to an array. - Fixed bug in IcePack that would prevent dynamically added adapters - to be used again after the IcePack registry was restarted. + from being used again after the IcePack registry was restarted. - Fixed tracing of operation mode. @@ -53,7 +57,7 @@ Changes since version 1.5.1 - Freeze dictionaries now support indices. You can index on the full value of the dictionary, or on a member (when the value is a struct or a class). When you index on a member, you can define several - indices (for different members). See the Freeze bench demo and the + indices (for different members). See the Freeze bench demo and the Freeze dbmap test for examples. - The Ice::Service class no longer resets the umask to 0, but rather @@ -233,7 +237,7 @@ Changes since version 1.3.0 - Removed slice2wsdl. - Changed the way sequences are unmarshaled to protect against - malicous messages with faked very large sequence count values. + malicious messages with faked very large sequence count values. While even with previous versions of Ice, buffer overruns were impossible, malicious messages could cause large amounts of memory to be preallocated, causing the receiving process to run out of @@ -785,7 +789,7 @@ Changes since version 1.1.1 have an associated transaction that is committed when the iterator is closed. - Concurrent reads and writes to the same underlyding Map can + Concurrent reads and writes to the same underlying Map can generate deadlocks, even with a single writer. Berkeley DB detects such deadlocks and "kills" one locker (iterator or transaction) to resolve it. For non-iterator access, Freeze handles this situation diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp index aef8746454d..9151d0b33fd 100644 --- a/cpp/src/Ice/ObjectAdapterI.cpp +++ b/cpp/src/Ice/ObjectAdapterI.cpp @@ -119,7 +119,7 @@ Ice::ObjectAdapterI::activate() { Identity ident; ident.name = "dummy"; - locatorRegistry->setAdapterDirectProxy(_id, newDirectProxy(ident)); + locatorRegistry->setAdapterDirectProxy(_id, newDirectProxy(ident, "")); } catch(const Ice::AdapterNotFoundException&) { @@ -316,7 +316,7 @@ Ice::ObjectAdapterI::addFacet(const ObjectPtr& object, const Identity& ident, co _servantManager->addServant(object, ident, facet); - return newProxy(ident); + return newProxy(ident, facet); } ObjectPrx @@ -428,7 +428,7 @@ Ice::ObjectAdapterI::createProxy(const Identity& ident) const checkForDeactivation(); checkIdentity(ident); - return newProxy(ident); + return newProxy(ident, ""); } ObjectPrx @@ -439,7 +439,7 @@ Ice::ObjectAdapterI::createDirectProxy(const Identity& ident) const checkForDeactivation(); checkIdentity(ident); - return newDirectProxy(ident); + return newDirectProxy(ident, ""); } ObjectPrx @@ -758,18 +758,18 @@ Ice::ObjectAdapterI::~ObjectAdapterI() } ObjectPrx -Ice::ObjectAdapterI::newProxy(const Identity& ident) const +Ice::ObjectAdapterI::newProxy(const Identity& ident, const string& facet) const { if(_id.empty()) { - return newDirectProxy(ident); + return newDirectProxy(ident, facet); } else { // // Create a reference with the adapter id. // - ReferencePtr ref = _instance->referenceFactory()->create(ident, Context(), "", + ReferencePtr ref = _instance->referenceFactory()->create(ident, Context(), facet, Reference::ModeTwoway, false, _id, 0, _locatorInfo, true); @@ -781,7 +781,7 @@ Ice::ObjectAdapterI::newProxy(const Identity& ident) const } ObjectPrx -Ice::ObjectAdapterI::newDirectProxy(const Identity& ident) const +Ice::ObjectAdapterI::newDirectProxy(const Identity& ident, const string& facet) const { vector<EndpointPtr> endpoints; @@ -809,7 +809,7 @@ Ice::ObjectAdapterI::newDirectProxy(const Identity& ident) const // // Create a reference and return a proxy for this reference. // - ReferencePtr ref = _instance->referenceFactory()->create(ident, Context(), "", Reference::ModeTwoway, + ReferencePtr ref = _instance->referenceFactory()->create(ident, Context(), facet, Reference::ModeTwoway, false, endpoints, 0, true); return _instance->proxyFactory()->referenceToProxy(ref); diff --git a/cpp/src/Ice/ObjectAdapterI.h b/cpp/src/Ice/ObjectAdapterI.h index d71077efc43..fa3859a248e 100644 --- a/cpp/src/Ice/ObjectAdapterI.h +++ b/cpp/src/Ice/ObjectAdapterI.h @@ -88,8 +88,8 @@ private: virtual ~ObjectAdapterI(); friend class IceInternal::ObjectAdapterFactory; - ObjectPrx newProxy(const Identity&) const; - ObjectPrx newDirectProxy(const Identity&) const; + ObjectPrx newProxy(const Identity&, const std::string&) const; + ObjectPrx newDirectProxy(const Identity&, const std::string&) const; void checkForDeactivation() const; static void checkIdentity(const Identity&); std::vector<IceInternal::EndpointPtr> parseEndpoints(const std::string&) const; |