diff options
author | marina <marina@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2000-09-05 03:27:55 +0000 |
---|---|---|
committer | marina <marina@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2000-09-05 03:27:55 +0000 |
commit | fcf03baff2fd2b42673eb2a79ed75097e05c00cc (patch) | |
tree | 1236e7586629b454a7064cc5f5449a7ccb4abe7c | |
parent | e06d15aeaa1621d5bb28798046fbf7ebd3751692 (diff) | |
download | ATCD-fcf03baff2fd2b42673eb2a79ed75097e05c00cc.tar.gz |
ChangeLogTag:Mon Sep 4 22:18:16 2000 Marina Spivak <marina@cs.wustl.edu>
-rw-r--r-- | TAO/ChangeLogs/ChangeLog-02a | 15 | ||||
-rw-r--r-- | TAO/tao/Stub.cpp | 36 |
2 files changed, 32 insertions, 19 deletions
diff --git a/TAO/ChangeLogs/ChangeLog-02a b/TAO/ChangeLogs/ChangeLog-02a index c21d57bde12..df6c3ee0cfa 100644 --- a/TAO/ChangeLogs/ChangeLog-02a +++ b/TAO/ChangeLogs/ChangeLog-02a @@ -1,3 +1,16 @@ +Mon Sep 4 22:18:16 2000 Marina Spivak <marina@cs.wustl.edu> + + * tao/Stub.cpp: + + Changed the use of <MProfile::get_next> to + <MProfile::get_profile> in the TAO_Stub constructor. <get_next> + method has side effects, and was corrupting the state of the + stub's <base_profiles_> member. This fixes the following bug in + the orb: if the invocation using the first profile in the IOR + does not succeed for whatever reason, e.g., protocol not + supported, the invocation will fail without going through other + profiles. + Sun Sep 03 19:40:43 2000 Carlos O'Ryan <coryan@uci.edu> * TAO_IDL/TAO_IDL_BE_DLL.dsp: @@ -12,7 +25,7 @@ Sun Sep 3 15:35:11 2000 Carlos O'Ryan <coryan@uci.edu> * orbsvcs/orbsvcs/Makefile.Svc_Utils: DU/CXX is more strict about inter-library dependencies than other compiles, add the libraries reported missing in the last - build. + build. Sun Sep 3 12:16:00 2000 Carlos O'Ryan <coryan@uci.edu> diff --git a/TAO/tao/Stub.cpp b/TAO/tao/Stub.cpp index ab967a375ce..82660f16cab 100644 --- a/TAO/tao/Stub.cpp +++ b/TAO/tao/Stub.cpp @@ -48,7 +48,7 @@ ACE_RCSID(tao, TAO_Stub, "$Id$") priority_banded_connection_policy_ (0), client_protocol_policy_ (0), are_policies_parsed_ (0), - + #endif /* TAO_HAS_RT_CORBA == 1 */ base_profiles_ ((CORBA::ULong) 0), forward_profiles_ (0), @@ -98,7 +98,7 @@ ACE_RCSID(tao, TAO_Stub, "$Id$") for (CORBA::ULong i = 0; i < this->base_profiles_.profile_count (); ++i) { // Get the ith profile - profile = this->base_profiles_.get_next (); + profile = this->base_profiles_.get_profile (i); profile->the_stub (this); } } @@ -138,11 +138,11 @@ TAO_Stub::~TAO_Stub (void) this->orb_core_->_decr_refcnt (); #if (TAO_HAS_RTCORBA == 1) - + this->priority_model_policy_->destroy (); this->priority_banded_connection_policy_->destroy (); this->client_protocol_policy_->destroy (); - + #endif /* TAO_HAS_RT_CORBA */ } @@ -571,7 +571,7 @@ TAO_Stub::parse_policies (void) = this->base_profiles_.policy_list (); CORBA::ULong length = policy_list->length (); - + for (unsigned int i = 0; i < length; ++i) { if (((*policy_list)[i]->policy_type () == RTCORBA::PRIORITY_MODEL_POLICY_TYPE)) @@ -583,7 +583,7 @@ TAO_Stub::parse_policies (void) else if (((*policy_list)[i]->policy_type () == RTCORBA::CLIENT_PROTOCOL_POLICY_TYPE)) this->exposed_client_protocol ((*policy_list)[i].in ()); } - + this->are_policies_parsed_ = 1; } @@ -592,7 +592,7 @@ TAO_Stub::exposed_priority_model (void) { if (!this->are_policies_parsed_) this->parse_policies (); - + if (!CORBA::is_nil (this->priority_model_policy_)) this->priority_model_policy_->_add_ref (); @@ -606,13 +606,13 @@ void TAO_Stub::exposed_priority_model (CORBA::Policy_ptr policy) RTCORBA::PriorityModelPolicy *pm_policy = 0; pm_policy = RTCORBA::PriorityModelPolicy::_narrow (policy); - + if (!CORBA::is_nil (pm_policy)) { this->priority_model_policy_ = ACE_static_cast (TAO_PriorityModelPolicy *, pm_policy); - + } } } @@ -622,10 +622,10 @@ TAO_Stub::exposed_priority_banded_connection (void) { if (!this->are_policies_parsed_) this->parse_policies (); - + if (!CORBA::is_nil (this->priority_banded_connection_policy_)) this->priority_banded_connection_policy_->_add_ref (); - + return this->priority_banded_connection_policy_; } @@ -634,12 +634,12 @@ TAO_Stub::exposed_priority_banded_connection (CORBA::Policy_ptr policy) { if (!CORBA::is_nil (policy)) { - RTCORBA::PriorityBandedConnectionPolicy_ptr pbc_policy = + RTCORBA::PriorityBandedConnectionPolicy_ptr pbc_policy = RTCORBA::PriorityBandedConnectionPolicy::_narrow (policy); - + if (!CORBA::is_nil (pbc_policy)) { - this->priority_banded_connection_policy_ = + this->priority_banded_connection_policy_ = ACE_static_cast (TAO_PriorityBandedConnectionPolicy *, pbc_policy); } @@ -650,10 +650,10 @@ TAO_Stub::exposed_client_protocol (void) { if (!this->are_policies_parsed_) this->parse_policies (); - + if (!CORBA::is_nil (this->client_protocol_policy_)) this->client_protocol_policy_->_add_ref (); - + return this->client_protocol_policy_; } @@ -662,9 +662,9 @@ TAO_Stub::exposed_client_protocol (CORBA::Policy_ptr policy) { if (!CORBA::is_nil (policy)) { - RTCORBA::ClientProtocolPolicy_ptr cp_policy = + RTCORBA::ClientProtocolPolicy_ptr cp_policy = RTCORBA::ClientProtocolPolicy::_narrow (policy); - + if (!CORBA::is_nil (cp_policy)) { this->client_protocol_policy_ = |