]> www.vanbest.org Git - sasc-ng.git/commitdiff
added jwc's network deadlock patch
authorleslie <unknown>
Sat, 25 Sep 2010 20:49:54 +0000 (22:49 +0200)
committerleslie <unknown>
Sat, 25 Sep 2010 20:49:54 +0000 (22:49 +0200)
network.c

index f8ccaf152e9476e83a71436eedc9034c0d619261..9299d8078f581cf05cf97ba07dc05ba352a5795f 100644 (file)
--- 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;
 }