mirror of
https://github.com/PepperDash/PepperDashCore.git
synced 2026-02-16 13:14:49 +00:00
Merged in bugfix/PDC-38_RestartListeningAfterMax (pull request #40)
Bugfix/PDC-38 RestartListeningAfterMax
This commit is contained in:
BIN
._Readme.md
Normal file
BIN
._Readme.md
Normal file
Binary file not shown.
@@ -403,31 +403,26 @@ namespace PepperDash.Core
|
|||||||
ErrorLog.Warn(string.Format("Server '{0}': No Shared Key set", Key));
|
ErrorLog.Warn(string.Format("Server '{0}': No Shared Key set", Key));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (IsListening)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (SecureServer == null)
|
|
||||||
{
|
|
||||||
SecureServer = new SecureTCPServer(Port, MaxClients);
|
|
||||||
if(HeartbeatRequired)
|
|
||||||
SecureServer.SocketSendOrReceiveTimeOutInMs = (this.HeartbeatRequiredIntervalMs * 5);
|
|
||||||
SecureServer.HandshakeTimeout = 30;
|
|
||||||
SecureServer.SocketStatusChange += new SecureTCPServerSocketStatusChangeEventHandler(SecureServer_SocketStatusChange);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//KillServer(); Remove this to be able to reactivate listener if it stops itself due to max clients without disconnecting connected clients.
|
|
||||||
SecureServer.PortNumber = Port;
|
|
||||||
}
|
|
||||||
ServerStopped = false;
|
|
||||||
SecureServer.WaitForConnectionAsync(IPAddress.Any, SecureConnectCallback);
|
|
||||||
OnServerStateChange(SecureServer.State);
|
|
||||||
Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "Secure Server Status: {0}, Socket Status: {1}", SecureServer.State, SecureServer.ServerSocketStatus);
|
|
||||||
|
|
||||||
// StartMonitorClient();
|
|
||||||
|
|
||||||
|
|
||||||
ServerCCSection.Leave();
|
if (SecureServer == null)
|
||||||
|
{
|
||||||
|
SecureServer = new SecureTCPServer(Port, MaxClients);
|
||||||
|
if (HeartbeatRequired)
|
||||||
|
SecureServer.SocketSendOrReceiveTimeOutInMs = (this.HeartbeatRequiredIntervalMs * 5);
|
||||||
|
SecureServer.HandshakeTimeout = 30;
|
||||||
|
SecureServer.SocketStatusChange += new SecureTCPServerSocketStatusChangeEventHandler(SecureServer_SocketStatusChange);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SecureServer.PortNumber = Port;
|
||||||
|
}
|
||||||
|
ServerStopped = false;
|
||||||
|
SecureServer.WaitForConnectionAsync(IPAddress.Any, SecureConnectCallback);
|
||||||
|
OnServerStateChange(SecureServer.State);
|
||||||
|
Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "Secure Server Status: {0}, Socket Status: {1}", SecureServer.State, SecureServer.ServerSocketStatus);
|
||||||
|
ServerCCSection.Leave();
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -678,9 +673,12 @@ namespace PepperDash.Core
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "SecureServerSocketStatusChange Index:{0} status:{1} Port:{2} IP:{3}", clientIndex, serverSocketStatus, this.SecureServer.GetPortNumberServerAcceptedConnectionFromForSpecificClient(clientIndex), this.SecureServer.GetLocalAddressServerAcceptedConnectionFromForSpecificClient(clientIndex));
|
|
||||||
|
// Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "SecureServerSocketStatusChange Index:{0} status:{1} Port:{2} IP:{3}", clientIndex, serverSocketStatus, this.SecureServer.GetPortNumberServerAcceptedConnectionFromForSpecificClient(clientIndex), this.SecureServer.GetLocalAddressServerAcceptedConnectionFromForSpecificClient(clientIndex));
|
||||||
if (serverSocketStatus != SocketStatus.SOCKET_STATUS_CONNECTED)
|
if (serverSocketStatus != SocketStatus.SOCKET_STATUS_CONNECTED)
|
||||||
{
|
{
|
||||||
|
Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "SecureServerSocketStatusChange ConnectedCLients: {0} ServerState: {1} Port: {2}", SecureServer.NumberOfClientsConnected, SecureServer.State, SecureServer.PortNumber);
|
||||||
|
|
||||||
if (ConnectedClientsIndexes.Contains(clientIndex))
|
if (ConnectedClientsIndexes.Contains(clientIndex))
|
||||||
ConnectedClientsIndexes.Remove(clientIndex);
|
ConnectedClientsIndexes.Remove(clientIndex);
|
||||||
if (HeartbeatRequired && HeartbeatTimerDictionary.ContainsKey(clientIndex))
|
if (HeartbeatRequired && HeartbeatTimerDictionary.ContainsKey(clientIndex))
|
||||||
@@ -693,6 +691,10 @@ namespace PepperDash.Core
|
|||||||
ClientReadyAfterKeyExchange.Remove(clientIndex);
|
ClientReadyAfterKeyExchange.Remove(clientIndex);
|
||||||
if (WaitingForSharedKey.Contains(clientIndex))
|
if (WaitingForSharedKey.Contains(clientIndex))
|
||||||
WaitingForSharedKey.Remove(clientIndex);
|
WaitingForSharedKey.Remove(clientIndex);
|
||||||
|
if (SecureServer.MaxNumberOfClientSupported > SecureServer.NumberOfClientsConnected)
|
||||||
|
{
|
||||||
|
Listen();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@@ -793,6 +795,7 @@ namespace PepperDash.Core
|
|||||||
{
|
{
|
||||||
if (numberOfBytesReceived > 0)
|
if (numberOfBytesReceived > 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
string received = "Nothing";
|
string received = "Nothing";
|
||||||
var handler = TextReceivedQueueInvoke;
|
var handler = TextReceivedQueueInvoke;
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -15,3 +15,5 @@
|
|||||||
- Build the project
|
- Build the project
|
||||||
- Copy PepperDash_Core.cpz and PepperDash_Core.dll from the bin folder to the CLZ Builds folder in the repo root. Commit.
|
- Copy PepperDash_Core.cpz and PepperDash_Core.dll from the bin folder to the CLZ Builds folder in the repo root. Commit.
|
||||||
- Merge the PR in Bitbucket
|
- Merge the PR in Bitbucket
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user