summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Mesnier <mesnier_p@ociweb.com>2009-06-15 20:25:59 +0000
committerPhil Mesnier <mesnier_p@ociweb.com>2009-06-15 20:25:59 +0000
commit1acb115db501db758c7bc83ba664f8c6384e240d (patch)
tree80b94b204874b2482f69bf58acac7a9d9913def9
parent38e31df7e75d3a1570d073257a27b132b241351d (diff)
downloadATCD-1acb115db501db758c7bc83ba664f8c6384e240d.tar.gz
Mon Jun 15 19:45:30 UTC 2009 Phil Mesnier <mesnier_p@ociweb.com>
* tao/IIOP_Connection_Handler.cpp: Change the initialization of the bidir listen point received in the context. This will silence an error that is reported by the ACE_INET_Addr ctor regardless of the debug output level. * tests/BiDirectional/run_test3557.pl: Change the number of iterations sent by the server to the callback. This is necessary to avoid a problem on windows in which the TAO_IIOP_Endpoint::hash() method first calls its object_addr_i() to initialize the object address. This then calls ACE_INET_Addr::set() which ultimately calls gethostbyname(). When the supplied endpoint is unreachable, as is the point of this test, windows apparently takes a while to time out before actually completing invocation and passing the test. This actually points out a potentential failure in the transport cache in that recached bidir transports may end up using a hash key value of 0. This is not in itself a failure, but more than one such entry will cause that 0'th bucket to become disproportionally large.
-rw-r--r--TAO/ChangeLog26
-rw-r--r--TAO/tao/IIOP_Connection_Handler.cpp9
-rwxr-xr-xTAO/tests/BiDirectional/run_test3557.pl2
3 files changed, 34 insertions, 3 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index 46ca8fe686b..9d6189508f3 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,29 @@
+Mon Jun 15 19:45:30 UTC 2009 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * tao/IIOP_Connection_Handler.cpp:
+
+ Change the initialization of the bidir listen point received in
+ the context. This will silence an error that is reported by the
+ ACE_INET_Addr ctor regardless of the debug output level.
+
+ * tests/BiDirectional/run_test3557.pl:
+
+ Change the number of iterations sent by the server to the
+ callback. This is necessary to avoid a problem on windows in
+ which the TAO_IIOP_Endpoint::hash() method first calls its
+ object_addr_i() to initialize the object address. This then
+ calls ACE_INET_Addr::set() which ultimately calls
+ gethostbyname(). When the supplied endpoint is unreachable,
+ as is the point of this test, windows apparently takes a while
+ to time out before actually completing invocation and passing
+ the test.
+
+ This actually points out a potentential failure in the transport
+ cache in that recached bidir transports may end up using a hash
+ key value of 0. This is not in itself a failure, but more than
+ one such entry will cause that 0'th bucket to become
+ disproportionally large.
+
Mon Jun 15 18:41:04 UTC 2009 Johnny Willemsen <jwillemsen@remedy.nl>
* orbsvcs/orbsvcs/SSLIOP/SSLIOP_Factory.cpp:
diff --git a/TAO/tao/IIOP_Connection_Handler.cpp b/TAO/tao/IIOP_Connection_Handler.cpp
index 30e21eb609c..78c638a8aa7 100644
--- a/TAO/tao/IIOP_Connection_Handler.cpp
+++ b/TAO/tao/IIOP_Connection_Handler.cpp
@@ -515,8 +515,13 @@ TAO_IIOP_Connection_Handler::process_listen_point_list (
for (CORBA::ULong i = 0; i < len; ++i)
{
IIOP::ListenPoint listen_point = listen_list[i];
- ACE_INET_Addr addr (listen_point.port,
- listen_point.host.in ());
+
+ // since the supplied host/port could be unresolvable, the assigning
+ // constructor of the INET addr should not be as it will emit an error
+ // if the underlying set fails. An unresolvable address in this case
+ // is OK, as it will only be used to find an already cached transport.
+ ACE_INET_Addr addr;
+ (void)addr.set(listen_point.port, listen_point.host.in ());
if (TAO_debug_level > 0)
{
diff --git a/TAO/tests/BiDirectional/run_test3557.pl b/TAO/tests/BiDirectional/run_test3557.pl
index 42123839deb..f90401f6e45 100755
--- a/TAO/tests/BiDirectional/run_test3557.pl
+++ b/TAO/tests/BiDirectional/run_test3557.pl
@@ -26,7 +26,7 @@ my $client_iorfile = $client->LocalFile ($iorbase);
$server->DeleteFile($iorbase);
$client->DeleteFile($iorbase);
-$SV = $server->CreateProcess ("server", "-ORBdebuglevel $debug_level -o $server_iorfile -i 100");
+$SV = $server->CreateProcess ("server", "-ORBdebuglevel $debug_level -o $server_iorfile -i 3");
$CL = $client->CreateProcess ("client", "-k file://$client_iorfile -ORBEndpoint iiop://:9950/hostname_in_ior=foobar.baz");
$server_status = $SV->Spawn ();