ソースを参照

Threading issue fix?

Adam Ierymenko 8 年 前
コミット
dd8b03a5c5
2 ファイル変更6 行追加3 行削除
  1. 5 2
      node/Peer.cpp
  2. 1 1
      node/Switch.cpp

+ 5 - 2
node/Peer.cpp

@@ -424,18 +424,21 @@ void Peer::redirect(void *tPtr,const int64_t localSocket,const InetAddress &remo
 
 	SharedPtr<Path> op;
 	SharedPtr<Path> np(RR->topology->getPath(localSocket,remoteAddress));
+	np->received(now);
 	attemptToContactAt(tPtr,localSocket,remoteAddress,now,true,np->nextOutgoingCounter());
 
 	{
 		Mutex::Lock _l(_paths_m);
 		if (remoteAddress.ss_family == AF_INET) {
 			op = _v4Path.p;
-			_v4Path.p = np;
+			_v4Path.lr = now;
 			_v4Path.sticky = now;
+			_v4Path.p = np;
 		} else if (remoteAddress.ss_family == AF_INET6) {
 			op = _v6Path.p;
-			_v6Path.p = np;
+			_v6Path.lr = now;
 			_v6Path.sticky = now;
+			_v6Path.p = np;
 		}
 	}
 

+ 1 - 1
node/Switch.cpp

@@ -719,7 +719,7 @@ bool Switch::_trySend(void *tPtr,Packet &packet,bool encrypt)
 			}
 		}
 	} else {
-		return false; // if we are not in cluster mode, there is no way we can send without knowing the peer directly
+		return false;
 	}
 
 	unsigned int chunkSize = std::min(packet.size(),(unsigned int)ZT_UDP_DEFAULT_PAYLOAD_MTU);