======================= ORBit2-2.14.4 ===========================
2006-12-12 Christian Persch <
[email protected]>
* autogen.sh:
* configure.in:
Don't use deprecated autoconf macros. Use AM 1.9. Bug #383527.
2006-12-05 Jules Colding <
[email protected]>
* 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, <arguments>, 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 <
[email protected]>
* configure.in: Added autoconf 2.60+ required datarootdir variable
2006-12-03 Jules Colding <
[email protected]>
* 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 <
[email protected]>
* 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 <
[email protected]>
* src/services/name/name-client.c: (main): Fix some signedness
compiler warnings.
2006-11-10 Kjartan Maraas <
[email protected]>
* 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 <
[email protected]>
* 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 <
[email protected]>
* 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 <
[email protected]>
* 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 <
[email protected]>
* 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 <
[email protected]>
2006-09-07 Tor Lillqvist <
[email protected]>
* 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.