summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 ();