diff options
author | Steve Huston <shuston@riverace.com> | 2018-04-10 18:59:38 -0400 |
---|---|---|
committer | Steve Huston <shuston@riverace.com> | 2018-04-10 18:59:38 -0400 |
commit | ceb273ea994e3718d2e7197454839bf7c1fcce34 (patch) | |
tree | 273df17f62dda934429ca8b4902ec3346b979cf2 /TAO/tao | |
parent | 3718261cb814c3cc598de91fa2bee7ddcdfffc7b (diff) | |
parent | 29c5bc48b96635cf8aba0f63e3ebd5f3802452d3 (diff) | |
download | ATCD-Riverace-case2088.tar.gz |
Merge out from masterRiverace-case2088
Diffstat (limited to 'TAO/tao')
-rw-r--r-- | TAO/tao/Connector_Registry.cpp | 37 | ||||
-rw-r--r-- | TAO/tao/Object.cpp | 5 | ||||
-rw-r--r-- | TAO/tao/Strategies/SHMIOP_Acceptor.cpp | 15 | ||||
-rw-r--r-- | TAO/tao/Strategies/SHMIOP_Connector.cpp | 9 | ||||
-rw-r--r-- | TAO/tao/Synch_Invocation.cpp | 20 | ||||
-rw-r--r-- | TAO/tao/Version.h | 8 |
6 files changed, 57 insertions, 37 deletions
diff --git a/TAO/tao/Connector_Registry.cpp b/TAO/tao/Connector_Registry.cpp index 0f828f613b1..8d3d2eece02 100644 --- a/TAO/tao/Connector_Registry.cpp +++ b/TAO/tao/Connector_Registry.cpp @@ -165,8 +165,13 @@ TAO_Connector_Registry::create_profile (TAO_InputCDR &cdr) CORBA::ULong tag = 0; // If there is an error we abort. - if ((cdr >> tag) == 0) + if (!(cdr >> tag)) + { + TAOLIB_ERROR ((LM_ERROR, + ACE_TEXT ("TAO (%P|%t) - TAO_Connector_Registry::") + ACE_TEXT ("create_profile: Unable to extract tag from CDR stream\n"))); return 0; + } TAO_Connector *connector = this->get_connector (tag); @@ -195,7 +200,6 @@ TAO_Connector_Registry::create_profile (TAO_InputCDR &cdr) } } - TAO_Profile *pfile = 0; ACE_NEW_RETURN (pfile, TAO_Unknown_Profile (tag, @@ -203,6 +207,9 @@ TAO_Connector_Registry::create_profile (TAO_InputCDR &cdr) 0); if (pfile->decode (cdr) == -1) { + TAOLIB_ERROR ((LM_ERROR, + ACE_TEXT ("TAO (%P|%t) - TAO_Connector_Registry::") + ACE_TEXT ("create_profile: Unable to decode unknown profile from CDR stream\n"))); pfile->_decr_refcnt (); pfile = 0; } @@ -217,18 +224,36 @@ TAO_Connector_Registry::create_profile (TAO_InputCDR &cdr) // ProfileData is encoded as a sequence of octet. So first get the // length of the sequence. CORBA::ULong encap_len = 0; - if ((cdr >> encap_len) == 0) + if (!(cdr >> encap_len)) + { + TAOLIB_ERROR ((LM_ERROR, + ACE_TEXT ("TAO (%P|%t) - TAO_Connector_Registry::") + ACE_TEXT ("create_profile: Unable to extract encapsulated length from CDR stream\n"))); return 0; + } // Create the decoding stream from the encapsulation in the buffer, // and skip the encapsulation. TAO_InputCDR str (cdr, encap_len); - if (str.good_bit () == 0 - || cdr.skip_bytes (encap_len) == 0) + if (!str.good_bit () || !cdr.skip_bytes (encap_len)) + { + TAOLIB_ERROR ((LM_ERROR, + ACE_TEXT ("TAO (%P|%t) - TAO_Connector_Registry::") + ACE_TEXT ("create_profile: Unable to skip encapsulated stream from CDR stream\n"))); return 0; + } + + TAO_Profile* profile = connector->create_profile (str); + + if (!profile) + { + TAOLIB_ERROR ((LM_ERROR, + ACE_TEXT ("TAO (%P|%t) - TAO_Connector_Registry::") + ACE_TEXT ("create_profile: Connector returned null profile for tag 0x%x\n"), tag)); + } - return connector->create_profile (str); + return profile; } char diff --git a/TAO/tao/Object.cpp b/TAO/tao/Object.cpp index 3e73ac25c1c..78a7cd0d77c 100644 --- a/TAO/tao/Object.cpp +++ b/TAO/tao/Object.cpp @@ -929,9 +929,8 @@ operator>> (TAO_InputCDR& cdr, CORBA::Object*& x) // profile from the IOR. TAOLIB_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("TAO (%P|%t) - ERROR: Could not create all ") - ACE_TEXT ("profiles while extracting object [%d, %d]\n") - ACE_TEXT ("TAO (%P|%t) - ERROR: reference from the ") - ACE_TEXT ("CDR stream.\n"), + ACE_TEXT ("profiles while extracting object [%d, %d] ") + ACE_TEXT ("reference from the CDR stream.\n"), mp.profile_count (), profile_count), false); } diff --git a/TAO/tao/Strategies/SHMIOP_Acceptor.cpp b/TAO/tao/Strategies/SHMIOP_Acceptor.cpp index 2a582f8e2a5..83443fd6430 100644 --- a/TAO/tao/Strategies/SHMIOP_Acceptor.cpp +++ b/TAO/tao/Strategies/SHMIOP_Acceptor.cpp @@ -153,18 +153,9 @@ TAO_SHMIOP_Acceptor::is_collocated (const TAO_Endpoint *endpoint) if (endp == 0) return 0; - // @@ TODO The following code looks funky, why only the host - // name is compared? What if there are multiple SHMIOP - // servers in the same address? Why do SHMIOP_Endpoints keep - // a INET_Addr but not a MEM_Addr? And why is there no lazy - // evaluation of IP-addresses for SHMIOP endpoints? Is it - // because it is always 'localhost'? We need answers to - // these questions to solve: - // - // http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=1220 - // - // The following code is suspec - // compare the port and sin_addr (numeric host address) + if (endp->port () != this->address_.get_port_number ()) + return 0; + return this->address_.same_host (endp->object_addr ()); } diff --git a/TAO/tao/Strategies/SHMIOP_Connector.cpp b/TAO/tao/Strategies/SHMIOP_Connector.cpp index bcf909b54ee..3f0532eb050 100644 --- a/TAO/tao/Strategies/SHMIOP_Connector.cpp +++ b/TAO/tao/Strategies/SHMIOP_Connector.cpp @@ -96,8 +96,14 @@ TAO_SHMIOP_Connector::set_validate_endpoint (TAO_Endpoint *endpoint) // Verify that the remote ACE_INET_Addr was initialized properly. // Failure can occur if hostname lookup failed when initializing the // remote ACE_INET_Addr. - if (remote_address.get_type () != AF_INET) + switch (remote_address.get_type ()) { + case AF_INET: +#ifdef ACE_HAS_IPV6 + case AF_INET6: +#endif + break; + default: if (TAO_debug_level > 0) { TAOLIB_ERROR ((LM_ERROR, @@ -111,7 +117,6 @@ TAO_SHMIOP_Connector::set_validate_endpoint (TAO_Endpoint *endpoint) } return 0; - } TAO_Transport * diff --git a/TAO/tao/Synch_Invocation.cpp b/TAO/tao/Synch_Invocation.cpp index c2159dc9049..5cc60f9ad17 100644 --- a/TAO/tao/Synch_Invocation.cpp +++ b/TAO/tao/Synch_Invocation.cpp @@ -126,18 +126,18 @@ namespace TAO { if (this->retry_state_ && this->retry_state_->forward_on_exception_increment(FOE_TRANSIENT)) - { - if (TAO_debug_level > 0) - TAOLIB_DEBUG ((LM_INFO, - ACE_TEXT ("TAO (%P|%t) - Synch_Twoway_Invocation::") - ACE_TEXT ("remote_twoway retrying on TRANSIENT ") - ACE_TEXT ("exception\n"))); - this->retry_state_->next_profile_retry (*this->stub ()); + { + if (TAO_debug_level > 0) + TAOLIB_DEBUG ((LM_INFO, + ACE_TEXT ("TAO (%P|%t) - Synch_Twoway_Invocation::") + ACE_TEXT ("remote_twoway retrying on TRANSIENT ") + ACE_TEXT ("exception\n"))); + this->retry_state_->next_profile_retry (*this->stub ()); #if TAO_HAS_INTERCEPTORS == 1 - s = this->receive_other_interception (); + s = this->receive_other_interception (); #endif /* TAO_HAS_INTERCEPTORS */ - return TAO_INVOKE_RESTART; - } + return TAO_INVOKE_RESTART; + } else { // Way back, we failed to find a profile we could connect to. diff --git a/TAO/tao/Version.h b/TAO/tao/Version.h index cc44cc260f3..8b48ae5bef1 100644 --- a/TAO/tao/Version.h +++ b/TAO/tao/Version.h @@ -4,9 +4,9 @@ #define TAO_MAJOR_VERSION 2 #define TAO_MINOR_VERSION 4 -#define TAO_MICRO_VERSION 6 -#define TAO_BETA_VERSION 6 -#define TAO_VERSION "2.4.6" -#define TAO_VERSION_CODE 132102 +#define TAO_MICRO_VERSION 7 +#define TAO_BETA_VERSION 7 +#define TAO_VERSION "2.4.7" +#define TAO_VERSION_CODE 132103 #define TAO_MAKE_VERSION_CODE(a,b,c) (((a) << 16) + ((b) << 8) + (c)) |