diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Current.inl')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Current.inl | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Current.inl b/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Current.inl index 04f1d588092..e33c55e03a8 100644 --- a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Current.inl +++ b/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Current.inl @@ -17,9 +17,15 @@ TAO_SSLIOP_Current::implementation (void) if (this->orb_core_ == 0 && this->init () != 0) return 0; - TAO_SSLIOP_Current_Impl *impl = - ACE_static_cast (TAO_SSLIOP_Current_Impl *, + TAO_Security_Current_Impl *impl = + ACE_static_cast (TAO_Security_Current_Impl *, this->orb_core_->get_tss_resource (this->tss_slot_)); - return impl; + // Make sure we've got SSL session state in TSS before allowing + // further use of the SSLIOP::Current object. + if (impl != 0 && impl->tag () == SSLIOP::TAG_SSL_SEC_TRANS) + return ACE_dynamic_cast (TAO_SSLIOP_Current_Impl *, + impl); + + return 0; } |