Index: src/Glacier2/RequestQueue.cpp =================================================================== RCS file: /home/cvsroot/ice/src/Glacier2/RequestQueue.cpp,v retrieving revision 1.28 diff -r1.28 RequestQueue.cpp 17,48d16 < namespace Glacier2 < { < < class AMI_Object_ice_invokeI : public AMI_Object_ice_invoke < { < public: < < AMI_Object_ice_invokeI(const AMD_Object_ice_invokePtr& amdCB) : < _amdCB(amdCB) < { < assert(_amdCB); < } < < virtual void < ice_response(bool ok, const std::vector& outParams) < { < _amdCB->ice_response(ok, outParams); < } < < virtual void < ice_exception(const Exception& ex) < { < _amdCB->ice_exception(ex); < } < < private: < < const AMD_Object_ice_invokePtr _amdCB; < }; < < } < 75d42 < 79c46,49 < if(_proxy->ice_isTwoway()) --- > bool ok; > ByteSeq outParams; > > try 81d50 < AMI_Object_ice_invokePtr cb = new AMI_Object_ice_invokeI(_amdCB); 84c53 < _proxy->ice_invoke_async(cb, _current.operation, _current.mode, _inParams, _current.ctx); --- > ok = _proxy->ice_invoke(_current.operation, _current.mode, _inParams, outParams, _current.ctx); 88c57 < _proxy->ice_invoke_async(cb, _current.operation, _current.mode, _inParams); --- > ok = _proxy->ice_invoke(_current.operation, _current.mode, _inParams, outParams); 90,93c59,60 < } < else < { < try --- > > if(_proxy->ice_isTwoway()) 95,103c62 < ByteSeq outParams; < if(_forwardContext) < { < _proxy->ice_invoke(_current.operation, _current.mode, _inParams, outParams, _current.ctx); < } < else < { < _proxy->ice_invoke(_current.operation, _current.mode, _inParams, outParams); < } --- > _amdCB->ice_response(ok, outParams); 105c64,67 < catch(const LocalException&) --- > } > catch(const LocalException& ex) > { > if(_proxy->ice_isTwoway()) 106a69 > _amdCB->ice_exception(ex); 177,178d139 < < _requests.clear(); 237c198 < if(_destroy) --- > if(_destroy && _requests.empty()) Index: src/Glacier2/SessionRouterI.cpp =================================================================== RCS file: /home/cvsroot/ice/src/Glacier2/SessionRouterI.cpp,v retrieving revision 1.27 diff -r1.27 SessionRouterI.cpp 532,537d531 < // We must send back a response before we close the connection. < // < cb->ice_response(); < current.con->close(false); < < // 559a554,555 > > cb->ice_response();