summaryrefslogtreecommitdiff
path: root/TAO/tao
diff options
context:
space:
mode:
authorSteve Huston <shuston@riverace.com>2018-04-10 18:59:38 -0400
committerSteve Huston <shuston@riverace.com>2018-04-10 18:59:38 -0400
commitceb273ea994e3718d2e7197454839bf7c1fcce34 (patch)
tree273df17f62dda934429ca8b4902ec3346b979cf2 /TAO/tao
parent3718261cb814c3cc598de91fa2bee7ddcdfffc7b (diff)
parent29c5bc48b96635cf8aba0f63e3ebd5f3802452d3 (diff)
downloadATCD-ceb273ea994e3718d2e7197454839bf7c1fcce34.tar.gz
Merge out from masterRiverace-case2088
Diffstat (limited to 'TAO/tao')
-rw-r--r--TAO/tao/Connector_Registry.cpp37
-rw-r--r--TAO/tao/Object.cpp5
-rw-r--r--TAO/tao/Strategies/SHMIOP_Acceptor.cpp15
-rw-r--r--TAO/tao/Strategies/SHMIOP_Connector.cpp9
-rw-r--r--TAO/tao/Synch_Invocation.cpp20
-rw-r--r--TAO/tao/Version.h8
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))