summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Current.inl
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Current.inl')
-rw-r--r--TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Current.inl12
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;
}