Skip to content

Commit a327ccb

Browse files
committed
Added DisconnectOnUnreachable option to disable auto disconnect if NetworkUnreachable or HostUnreachable errors got
1 parent f3e38f5 commit a327ccb

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

LiteNetLib/NetManager.cs

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,11 @@ public NetPeer FirstPeer
323323
get { return _headPeer; }
324324
}
325325

326+
/// <summary>
327+
/// Disconnect peers if HostUnreachable or NetworkUnreachable spawned (old behaviour 0.9.x was true)
328+
/// </summary>
329+
public bool DisconnectOnUnreachable = false;
330+
326331
/// <summary>
327332
/// QoS channel count per message type (value must be between 1 and 64 channels)
328333
/// </summary>
@@ -492,20 +497,22 @@ internal int SendRaw(byte[] message, int start, int length, IPEndPoint remoteEnd
492497
result = _socket.SendTo(message, start, length, remoteEndPoint, ref errorCode);
493498
}
494499

495-
NetPeer fromPeer;
496500
switch (errorCode)
497501
{
498502
case SocketError.MessageSize:
499503
NetDebug.Write(NetLogLevel.Trace, "[SRD] 10040, datalen: {0}", length);
500504
return -1;
505+
501506
case SocketError.HostUnreachable:
502-
if (TryGetPeer(remoteEndPoint, out fromPeer))
503-
DisconnectPeerForce(fromPeer, DisconnectReason.HostUnreachable, errorCode, null);
504-
CreateEvent(NetEvent.EType.Error, remoteEndPoint: remoteEndPoint, errorCode: errorCode);
505-
return -1;
506507
case SocketError.NetworkUnreachable:
507-
if (TryGetPeer(remoteEndPoint, out fromPeer))
508-
DisconnectPeerForce(fromPeer, DisconnectReason.NetworkUnreachable, errorCode, null);
508+
if (DisconnectOnUnreachable && TryGetPeer(remoteEndPoint, out var fromPeer))
509+
{
510+
DisconnectPeerForce(
511+
fromPeer,
512+
errorCode == SocketError.HostUnreachable ? DisconnectReason.HostUnreachable : DisconnectReason.NetworkUnreachable,
513+
errorCode,
514+
null);
515+
}
509516
CreateEvent(NetEvent.EType.Error, remoteEndPoint: remoteEndPoint, errorCode: errorCode);
510517
return -1;
511518
}

0 commit comments

Comments
 (0)