Просмотр исходного кода

修复router一直打印一个warning的问题

tanghai 3 лет назад
Родитель
Сommit
d643d0cc8b
1 измененных файлов с 15 добавлено и 5 удалено
  1. 15 5
      Apps/Hotfix/Module/Router/RouterComponentSystem.cs

+ 15 - 5
Apps/Hotfix/Module/Router/RouterComponentSystem.cs

@@ -16,13 +16,20 @@ namespace ET
             {
                 self.OuterSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                 self.OuterSocket.Bind(outerAddress);
-                self.OuterSocket.SendBufferSize = 16 * Kcp.OneM;
-                self.OuterSocket.ReceiveBufferSize = 16 * Kcp.OneM;
+                if (!RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
+                {
+                    self.OuterSocket.SendBufferSize = 16 * Kcp.OneM;
+                    self.OuterSocket.ReceiveBufferSize = 16 * Kcp.OneM;
+                }
 
                 self.InnerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                 self.InnerSocket.Bind(new IPEndPoint(IPAddress.Parse(innerIP), 0));
-                self.InnerSocket.SendBufferSize = 16 * Kcp.OneM;
-                self.InnerSocket.ReceiveBufferSize = 16 * Kcp.OneM;
+
+                if (!RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
+                {
+                    self.InnerSocket.SendBufferSize = 16 * Kcp.OneM;
+                    self.InnerSocket.ReceiveBufferSize = 16 * Kcp.OneM;
+                }
 
                 if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
                 {
@@ -323,6 +330,9 @@ namespace ET
                         Log.Warning($"kcp router syn ip is diff3: {kcpRouter.SyncIpEndPoint.Address} {ipEndPoint.Address}");
                         break;
                     }
+                    
+                    // 发了syn过来,那么RouterSyn就成功了,可以删除ConnectId
+                    self.ConnectIdNodes.Remove(kcpRouter.ConnectId);
 
                     kcpRouter.LastRecvOuterTime = timeNow;
                     kcpRouter.OuterIpEndPoint = self.CloneAddress();
@@ -498,7 +508,7 @@ namespace ET
                         Log.Warning($"kcp router ack not found outer nodes: {outerConn} {innerConn}");
                         break;
                     }
-
+                    
                     kcpRouterNode.Status = RouterStatus.Msg;
 
                     kcpRouterNode.InnerConn = innerConn;