1
0
mirror of https://github.com/lidgren/lidgren-network-gen3.git synced 2026-05-06 02:11:06 +09:00

Fixed maximum handshake attempts one-off error

Fixed better disconnect messages when not yet fully connected (aborting connection attempt)
This commit is contained in:
lidgren
2011-05-25 13:21:56 +00:00
parent be9394289f
commit bccfaa77ef
5 changed files with 20 additions and 7 deletions

View File

@@ -3,7 +3,7 @@
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.21022</ProductVersion>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{AE483C29-042E-4226-BA52-D247CE7676DA}</ProjectGuid>
<OutputType>Library</OutputType>
@@ -55,7 +55,6 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Encryption\INetEncryption.cs" />
<Compile Include="Encryption\NetBCrypt.cs" />
<Compile Include="Encryption\NetBlockEncryptionBase.cs" />
<Compile Include="Encryption\NetXorEncryption.cs" />
<Compile Include="Encryption\NetXteaEncryption.cs" />

View File

@@ -102,6 +102,17 @@ namespace Lidgren.Network
NetConnection serverConnection = ServerConnection;
if (serverConnection == null)
{
lock (m_handshakes)
{
if (m_handshakes.Count > 0)
{
LogVerbose("Aborting connection attempt");
foreach(var hs in m_handshakes)
hs.Value.Disconnect(byeMessage);
return;
}
}
LogWarning("Disconnect requested when not connected!");
return;
}

View File

@@ -59,7 +59,7 @@ namespace Lidgren.Network
if (now - m_lastHandshakeSendTime > m_peerConfiguration.m_resendHandshakeInterval)
{
if (m_handshakeAttempts > m_peerConfiguration.m_maximumHandshakeAttempts)
if (m_handshakeAttempts >= m_peerConfiguration.m_maximumHandshakeAttempts)
{
// failed to connect
ExecuteDisconnect("Failed to establish connection - no response from remote host", true);
@@ -431,6 +431,7 @@ namespace Lidgren.Network
if (m_status != NetConnectionStatus.Disconnected && m_status != NetConnectionStatus.None)
SetStatus(NetConnectionStatus.Disconnecting, byeMessage);
m_handshakeAttempts = 0;
m_disconnectRequested = true;
}
}

View File

@@ -109,9 +109,6 @@ namespace Lidgren.Network
if (reason == null)
reason = string.Empty;
// new status equals potentially new handshake attempts
m_handshakeAttempts = 0;
if (m_status == NetConnectionStatus.Connected)
{
m_timeoutDeadline = (float)NetTime.Now + m_peerConfiguration.m_connectionTimeout;

View File

@@ -338,7 +338,12 @@ namespace Lidgren.Network
public int MaximumHandshakeAttempts
{
get { return m_maximumHandshakeAttempts; }
set { m_maximumHandshakeAttempts = value; }
set
{
if (value < 1)
throw new NetException("MaximumHandshakeAttempts must be at least 1");
m_maximumHandshakeAttempts = value;
}
}
/// <summary>