From: leslie <unknown>
Date: Sat, 25 Sep 2010 20:49:54 +0000 (+0200)
Subject: added jwc's network deadlock patch
X-Git-Tag: upstream/620~66
X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=23d1d2b1f10a3272220fc8eff2846fca38b522e1;p=sasc-ng.git

added jwc's network deadlock patch
---

diff --git a/network.c b/network.c
index f8ccaf1..9299d80 100644
--- a/network.c
+++ b/network.c
@@ -192,7 +192,7 @@ bool cNetSocket::Connect(const char *Hostname, int Port, int timeout)
       }
     else PRINTF(L_GEN_ERROR,"socket: connect failed: %s",*StrError(errno));
 
-    if(connected) { Activity(); nw.Up(this); Unlock(); return true; }
+    if(connected) { Activity(); Unlock(); nw.Up(this); return true; }
     }
   Unlock();
   Disconnect();
@@ -216,7 +216,7 @@ bool cNetSocket::Bind(const char *Hostname, int Port)
     do { r=bind(sd,(struct sockaddr *)&socketAddr,sizeof(socketAddr)); } while(r<0 && errno==EINTR);
     if(r==0) {
       connected=true;
-      Activity(); nw.Up(this); Unlock();
+      Activity(); Unlock(); nw.Up(this);
       return true;
       }
     else PRINTF(L_GEN_ERROR,"socket: bind failed: %s",*StrError(errno));
@@ -228,8 +228,8 @@ bool cNetSocket::Bind(const char *Hostname, int Port)
 
 void cNetSocket::Disconnect(void)
 {
-  cMutexLock lock(this);
   nw.Down(this);
+  cMutexLock lock(this);
   if(sd>=0) { close(sd); sd=-1; }
   quietlog=connected=false;
 }