summaryrefslogtreecommitdiff
path: root/TAO/tao/Invocation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/Invocation.cpp')
-rw-r--r--TAO/tao/Invocation.cpp13
1 files changed, 5 insertions, 8 deletions
diff --git a/TAO/tao/Invocation.cpp b/TAO/tao/Invocation.cpp
index 46af924c2ea..9561555ce18 100644
--- a/TAO/tao/Invocation.cpp
+++ b/TAO/tao/Invocation.cpp
@@ -147,7 +147,8 @@ TAO_GIOP_Invocation::~TAO_GIOP_Invocation (void)
/// Ossama remove this when you are done..
if (this->profile_)
this->profile_->_decr_refcnt ();
- TAO_Transport::release (this->transport_);
+ if (this->transport_)
+ this->transport_->remove_reference ();
}
// The public API involves creating an invocation, starting it, filling
@@ -236,13 +237,10 @@ TAO_GIOP_Invocation::perform_call (TAO_Transport_Descriptor_Interface &desc
if (this->transport_ != 0)
{
this->transport_->make_idle ();
+ this->transport_->remove_reference ();
+ this->transport_ = 0;
}
- // Release the transport prior to connecting.
- // In most cases the transport_ will already be zero.
- TAO_Transport::release (this->transport_);
- this->transport_ = 0;
-
// Get a pointer to the connector registry, which might be in
// thread-specific storage, depending on the concurrency model.
TAO_Connector_Registry *conn_reg =
@@ -494,8 +492,7 @@ TAO_GIOP_Invocation::close_connection (void)
// false error reports to applications.
this->transport_->close_connection ();
- // this->transport_->idle ();
- TAO_Transport::release (this->transport_);
+ this->transport_->remove_reference ();
this->transport_ = 0;
this->endpoint_ = 0;