oaf activation bug fix ...
- From: Michael Meeks <michael ximian com>
- To: Maciej Stachowiak <mjs eazel com>
- Cc: <gnome-components-list gnome org>
- Subject: oaf activation bug fix ...
- Date: Thu, 15 Nov 2001 17:56:49 -0500 (EST)
Hi there,
This fixes Dan's reported bug: #64642, may I commit ?
It would be great if you could review my bonobo-activation leak
fix at the same time; since I have another patch queued here adding some
more regression tests that I'm holding off on until you do.
Thanks,
Michael.
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/oaf/ChangeLog,v
retrieving revision 1.190
diff -u -p -u -r1.190 ChangeLog
--- ChangeLog 2001/11/09 08:47:54 1.190
+++ ChangeLog 2001/11/15 22:52:49
@@ -1,3 +1,8 @@
+2001-11-16 Michael Meeks <michael ximian com>
+
+ * oafd/od-corba.c (impl_OAF_ObjectDirectory_activate):
+ fix for mutliple activations causing grief issues ...
+
2001-11-09 Wang Jian <lark linux net cn>
* configure.in(ALL_LINGUAS): Added zh_CN.
Index: oafd/od-corba.c
===================================================================
RCS file: /cvs/gnome/oaf/oafd/od-corba.c,v
retrieving revision 1.33
diff -u -p -u -r1.33 od-corba.c
--- oafd/od-corba.c 2001/09/04 03:46:53 1.33
+++ oafd/od-corba.c 2001/11/15 22:52:50
@@ -430,6 +430,7 @@ impl_OAF_ObjectDirectory_activate (impl_
ODActivationInfo ai;
OAF_GeneralError *errval;
char *error_description;
+ CORBA_Environment retry_ev;
retval = CORBA_OBJECT_NIL;
@@ -455,6 +456,31 @@ impl_OAF_ObjectDirectory_activate (impl_
if (si != NULL) {
retval = od_server_activate (si, &ai, servant->self, ev);
+ /* If we failed to activate - it may be because our
+ * request re-entered _during_ the activation
+ * process resulting in a second process being started
+ * but failing to register - so we'll look up again here
+ * to see if we can get it.
+ * FIXME: we should not be forking redundant processes
+ * while an activation of that same process is on the
+ * stack.
+ * FIXME: we only get away with this hack because we
+ * try and fork another process & thus allow the reply
+ * from the initial process to be handled in the event
+ * loop.
+ */
+
+ if (ev->_major != CORBA_NO_EXCEPTION) {
+ CORBA_exception_init (&retry_ev);
+
+ retval = od_get_active_server (servant, iid, ctx, &retry_ev);
+
+ CORBA_exception_free (&retry_ev);
+
+ if (retval != CORBA_OBJECT_NIL) {
+ CORBA_exception_free (ev);
+ }
+ }
} else {
errval = OAF_GeneralError__alloc ();
--
mmeeks gnu org <><, Pseudo Engineer, itinerant idiot
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]