libbonobo r3436 - in trunk: . activation-server



Author: michael
Date: Mon Jan 28 09:54:01 2008
New Revision: 3436
URL: http://svn.gnome.org/viewvc/libbonobo?rev=3436&view=rev

Log:
2008-01-28  Michael Meeks  <michael meeks novell com>

        * activation-server/object-directory-corba.c
        (od_get_active_server): fix #512520



Modified:
   trunk/ChangeLog
   trunk/activation-server/object-directory-corba.c

Modified: trunk/activation-server/object-directory-corba.c
==============================================================================
--- trunk/activation-server/object-directory-corba.c	(original)
+++ trunk/activation-server/object-directory-corba.c	Mon Jan 28 09:54:01 2008
@@ -364,9 +364,20 @@
 			break;
 		}
         }
-	if (retval != CORBA_OBJECT_NIL &&
-	    !CORBA_Object_non_existent (retval, NULL))
-		return CORBA_Object_duplicate (retval, NULL);
+	if (retval != CORBA_OBJECT_NIL) {
+                gboolean non_existent;
+                ServerLockState state;
+
+                /* With dead objects, this path can cause lengthy
+                   re-connection attempts, blocking all other
+                   activation, so drop the lock. g#512520 */
+                state = server_lock_drop();
+                non_existent = CORBA_Object_non_existent (retval, NULL);
+                server_lock_resume (state);
+
+                if (!non_existent)
+                        return CORBA_Object_duplicate (retval, NULL);
+        }
 
 	return CORBA_OBJECT_NIL;
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]