Author: rfm
Date: Mon Nov 24 12:49:22 2014
New Revision: 38200

URL: http://svn.gna.org/viewcvs/gnustep?rev=38200&view=rev
Log:
fixup locking problem

Modified:
    libs/ec/trunk/EcAlarmDestination.m
    libs/ec/trunk/EcConsole.m

Modified: libs/ec/trunk/EcAlarmDestination.m
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/ec/trunk/EcAlarmDestination.m?rev=38200&r1=38199&r2=38200&view=diff
==============================================================================
--- libs/ec/trunk/EcAlarmDestination.m  (original)
+++ libs/ec/trunk/EcAlarmDestination.m  Mon Nov 24 12:49:22 2014
@@ -38,7 +38,7 @@
 
 /* Make connection to destination host.
  */
-- (void) _connect;
+- (id<EcAlarmDestination>) _connect;
 
 /* Loss of connection ... clear destination.
  */
@@ -354,45 +354,55 @@
 
 @implementation        EcAlarmDestination (Private)
 
-- (void) _connect
-{
-  if (nil == (id)_destination)
-    {
-      if (nil != _name)
-        {
-          id   proxy;
-
-          if (nil == _host)
-            {
-              proxy = [NSConnection
-                rootProxyForConnectionWithRegisteredName: _name
-                                                    host: _host
-                usingNameServer:
-                  [NSMessagePortNameServer sharedInstance]];
-            }
-          else
-            {
-              proxy = [NSConnection
-                rootProxyForConnectionWithRegisteredName: _name
-                                                    host: _host
-                usingNameServer:
-                  [NSSocketPortNameServer sharedInstance]];
-            }
-
-          if (proxy != nil)
-            {
-              id connection = [proxy connectionForProxy];
-
-              [connection setDelegate: self];
-              [[NSNotificationCenter defaultCenter]
-                addObserver: self
-                selector: @selector(_connectionBecameInvalid:)
-                name: NSConnectionDidDieNotification
-                object: connection];
-              [self setDestination: (id<EcAlarmDestination>)proxy];
-            }
-        }
-    }
+- (id<EcAlarmDestination>) _connect
+{
+  id<EcAlarmDestination>        d = nil;
+
+  [_alarmLock lock];
+  NS_DURING
+    if (nil == (id)_destination)
+      {
+        if (nil != _name)
+          {
+            id proxy;
+
+            if (nil == _host)
+              {
+                proxy = [NSConnection
+                  rootProxyForConnectionWithRegisteredName: _name
+                                                      host: _host
+                  usingNameServer:
+                    [NSMessagePortNameServer sharedInstance]];
+              }
+            else
+              {
+                proxy = [NSConnection
+                  rootProxyForConnectionWithRegisteredName: _name
+                                                      host: _host
+                  usingNameServer:
+                    [NSSocketPortNameServer sharedInstance]];
+              }
+
+            if (proxy != nil)
+              {
+                id connection = [proxy connectionForProxy];
+
+                [connection setDelegate: self];
+                [[NSNotificationCenter defaultCenter]
+                  addObserver: self
+                  selector: @selector(_connectionBecameInvalid:)
+                  name: NSConnectionDidDieNotification
+                  object: connection];
+                [self setDestination: (id<EcAlarmDestination>)proxy];
+              }
+          }
+      }
+    d = [(id)_destination retain];
+  NS_HANDLER
+    NSLog(@"Problem connecting to destination ... %@", localException);
+  NS_ENDHANDLER
+  [_alarmLock unlock];
+  return [(id)d autorelease];
 }
 
 - (void) _connectionBecameInvalid: (id)connection
@@ -590,75 +600,72 @@
 {
   if (NO == [NSThread isMainThread])
     {
-      [self performSelectorOnMainThread: _cmd withObject: event waitUntilDone: 
NO];
+      [self performSelectorOnMainThread: _cmd
+                             withObject: event
+                          waitUntilDone: NO];
       return;
     }
-  [_alarmLock lock];
   NS_DURING
-    [self _connect];
-    [_destination alarm: event];
+    [[self _connect] alarm: event];
     NS_DURING
-      [_backups makeObjectsPerformSelector: @selector(alarm:)
-                               withObject: event];
+      [[self backups] makeObjectsPerformSelector: @selector(alarm:)
+                                      withObject: event];
     NS_HANDLER
-      DESTROY(_backups);
+      [self setBackups: nil];
       NSLog(@"Problem sending alarm to backups ... %@", localException);
     NS_ENDHANDLER
   NS_HANDLER
     [self setDestination: nil];
     NSLog(@"Problem sending alarm to destination ... %@", localException);
   NS_ENDHANDLER
-  [_alarmLock unlock];
 }
 
 - (void) domanageFwd: (NSString*)managedObject
 {
   if (NO == [NSThread isMainThread])
     {
-      [self performSelectorOnMainThread: _cmd withObject: managedObject 
waitUntilDone: NO];
+      [self performSelectorOnMainThread: _cmd
+                             withObject: managedObject
+                          waitUntilDone: NO];
       return;
     }
-  [_alarmLock lock];
   NS_DURING
-    [self _connect];
-    [_destination domanage: managedObject];
+    [[self _connect] domanage: managedObject];
     NS_DURING
-      [_backups makeObjectsPerformSelector: @selector(domanage:)
-                               withObject: managedObject];
+      [[self backups] makeObjectsPerformSelector: @selector(domanage:)
+                                      withObject: managedObject];
     NS_HANDLER
-      DESTROY(_backups);
+      [self setBackups: nil];
       NSLog(@"Problem with domanage to backups ... %@", localException);
     NS_ENDHANDLER
   NS_HANDLER
     [self setDestination: nil];
     NSLog(@"Problem with domanage to destination ... %@", localException);
   NS_ENDHANDLER
-  [_alarmLock unlock];
 }
 
 - (void) unmanageFwd: (NSString*)managedObject
 {
   if (NO == [NSThread isMainThread])
     {
-      [self performSelectorOnMainThread: _cmd withObject: managedObject 
waitUntilDone: NO];
+      [self performSelectorOnMainThread: _cmd
+                             withObject: managedObject
+                          waitUntilDone: NO];
       return;
     }
-  [_alarmLock lock];
   NS_DURING
-    [self _connect];
-    [_destination unmanage: managedObject];
+    [[self _connect] unmanage: managedObject];
     NS_DURING
-      [_backups makeObjectsPerformSelector: @selector(unmanage:)
-                               withObject: managedObject];
+      [[self backups] makeObjectsPerformSelector: @selector(unmanage:)
+                                      withObject: managedObject];
     NS_HANDLER
-      DESTROY(_backups);
+      [self setBackups: nil];
       NSLog(@"Problem with unmanage to backups ... %@", localException);
     NS_ENDHANDLER
   NS_HANDLER
     [self setDestination: nil];
     NSLog(@"Problem with unmanage to destination ... %@", localException);
   NS_ENDHANDLER
-  [_alarmLock unlock];
 }
 
 @end

Modified: libs/ec/trunk/EcConsole.m
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/ec/trunk/EcConsole.m?rev=38200&r1=38199&r2=38200&view=diff
==============================================================================
--- libs/ec/trunk/EcConsole.m   (original)
+++ libs/ec/trunk/EcConsole.m   Mon Nov 24 12:49:22 2014
@@ -770,7 +770,7 @@
        }
       if (nil != (host = [NSHost controlWellKnownName]))
         {
-          host = [[NSHost hostWithWellKnownName: host] wellKnownName];
+          host = [[NSHost hostWithWellKnownName: host] name];
         }
       if (nil == host)
        {


_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs

Reply via email to