======================= ORBit2-2.14.4 =========================== 2006-12-12 Christian Persch * autogen.sh: * configure.in: Don't use deprecated autoconf macros. Use AM 1.9. Bug #383527. 2006-12-05 Jules Colding * ORBit2: The previous two ChangeLog entries are hiding a lot of details which I'll hereby try to expand upon. The rationale for these changes is that any and all occurrences of g_cond_wait() in ORBit2 has the potential to block forever if it waits for a connection attempt to complete if said connection attempt is made towards a remote server which happens to be physically disconnected or powered off. This blocking behavior can be demonstrated by invoking an operation on a remote object that is physically inaccessible such as when the remote server is powered down or physically disconnected. Pseudo code: { CORBA_ORB orb = get_orb(); char *objref = get_corbaloc_str(); CORBA_Object obj = CORBA_OBJECT_NIL; CORBA_Environment ev[1]; CORBA_exception_init(ev); obj = CORBA_ORB_string_to_object(orb, objref, ev); FOO_INTERFACE_method(obj, , ev); } The last statement above will block forever in g_cond_wait() while waiting for the recieve buffer to be ready if the remote server is, say, powered down. An exception is on the other hand immediately thrown if the server object is merely gone. The changes to the code therefore boils down to the implementation of the ex_CORBA_TIMEOUT system exception being thrown if g_cond_timed_wait() times out. Most occurrences of g_cond_wait() has been replaced by g_cond_timed_wait(). The only remaining instance of g_cond_wait() is found in link_exec_command(). I haven't observed any problems with link_exec_command() so I've not touched that code. The affected code is: 1) A new ORB command line option: GIOPTimeoutLimit - timeout limit in microseconds. Defaults to 30 seconds. 2) giop_recv_buffer_get(). This one is obvious. We do not want to wait indefinitely for data to be received from a downed host. The waiting interval is configurable with the new GIOPTimeoutLimit ORB option. 3) Any code invoking link_wait(): a) link_connection_wait_connected_T() b) link_connection_try_reconnect() c) giop_connection_try_reconnect(), calls link_connection_try_reconnect() d) ORBit_try_connection_T(), calls giop_connection_try_reconnect() e) ORBit_object_get_connection(), calls ORBit_try_connection_T() 4) The waiting time in link_wait() is set at compile time to LINK_WAIT_TIMEOUT_USEC which is presently 10 seconds. 5) link_wait() has been modified to return a gboolean. FALSE if the timeout expired, TRUE otherwise. 6) link_connection_wait_connected_T() and link_connection_try_reconnect() will both disconnect the connection if link_wait() experienced a timeout. 2006-12-04 Jules Colding * configure.in: Added autoconf 2.60+ required datarootdir variable 2006-12-03 Jules Colding * include/orbit/GIOP/giop.h: Declare giop_recv_set_timeout(). * src/orb/orb-core/corba-orb.c (CORBA_ORB_init): Set GIOP timeout limit from the ORB option. Added new ORB option - GIOPTimeoutLimit. * src/orb/orb-core/orbit-small.c (ORBit_small_invoke_stub): Throw a TIMEOUT exception if a reply hasn't been recieved within the GIOP timeout limit. * src/orb/GIOP/giop-recv-buffer.c (giop_recv_buffer_get): Replaced a g_cond_wait() with a g_cond_timed_wait(). The original g_cond_wait() could potentially block forever if a remote server was physically offline. (giop_recv_set_timeout): Function to adjust the GIOP timeout limit. 2006-11-22 Kjartan Maraas * ORBit-2.0.pc.in: Move MINGW_CFLAGS and LIBM to Libs.private Sebastian Rittau. * configure.in: Use PKG_PROG_PKG_CONFIG instead of manual stuff. suggested by dmacks at netspace org. Closes bug #345729. 2006-11-22 Kjartan Maraas * src/services/name/name-client.c: (main): Fix some signedness compiler warnings. 2006-11-10 Kjartan Maraas * ORBit-2.0.pc.in: move gmodules-no-export-2.0 to Requires-private. Reported by Samuel Thibault. Closes bug #352198. 2006-11-10 Kjartan Maraas * src/orb/dynamic/dynany.c: (DynamicAny_DynAny_assign), (DynamicAny_DynAny_equal), (DynamicAny_DynAny_seek), (DynamicAny_DynEnum_set_as_ulong), (DynamicAny_DynUnion_set_discriminator), (DynamicAny_DynSequence_set_length): * src/orb/orb-core/corba-object.c: (CORBA_Object_is_equivalent): * src/orb/orb-core/corba-typecode.c: (CORBA_TypeCode_equal), (CORBA_TypeCode_equivalent), (CORBA_TypeCode_member_name), (CORBA_TypeCode_member_type), (CORBA_TypeCode_member_label): Patch from Georg Schwarz to fix lack of constification in ORBit2. Closes bug #171012. 2006-10-30 Kjartan Maraas * ORBit-2.0.pc.in: Add gobject-2.0 to the Requires line to fix linking statically against ORBit. Closes bug #322474. Suggested by Vladimir Panov. 2006-10-30 Kjartan Maraas * configure.in: Remove more SSL bits. * docs/internals/orbitrc.txt: Here too. * linc2/include/linc/linc-config.h.in: And here. Closes bug #354714. 2006-09-27 Leena Gunda * src/orb/GIOP/giop.c: (scan_socket_dir): Patch to fix the warning message for users with similar prefixes. Fixes bug #152659. Patch given by Manjunath Kadajji 2006-09-07 Tor Lillqvist * linc2/src/linc-connection.c (link_connection_do_initiate): Workaround for problem introduced on Win32 with Brian's patch below: If host is "127.0.0.1", don't need to check whether it is local.