reduce default http keepalive to just 30s because to viewers connections flood.
parent
d9a680703f
commit
e08ca7402c
|
@ -276,22 +276,24 @@ namespace OSHttpServer
|
|||
if (context.TriggerKeepalive)
|
||||
{
|
||||
context.TriggerKeepalive = false;
|
||||
context.MonitorKeepaliveStartMS = nowMS + 1;
|
||||
context.MonitorKeepaliveStartMS = nowMS + 500;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (context.MonitorKeepaliveStartMS != 0)
|
||||
{
|
||||
if (context.IsClosing)
|
||||
{
|
||||
disconnectError = SocketError.Success;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (EnvironmentTickCountAdd(context.TimeoutKeepAlive, context.MonitorKeepaliveStartMS) < nowMS)
|
||||
{
|
||||
if(context.IsClosing)
|
||||
disconnectError = SocketError.Success;
|
||||
else
|
||||
disconnectError = SocketError.TimedOut;
|
||||
context.MonitorKeepaliveStartMS = 0;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
if (EnvironmentTickCountAdd(context.TimeoutMaxIdle, context.LastActivityTimeMS) < nowMS)
|
||||
|
|
|
@ -46,7 +46,7 @@ namespace OSHttpServer
|
|||
public int TimeoutRequestReceived = 30000; // 30 seconds
|
||||
|
||||
public int TimeoutMaxIdle = 180000; // 3 minutes
|
||||
public int m_TimeoutKeepAlive = 60000;
|
||||
public int m_TimeoutKeepAlive = 30000;
|
||||
|
||||
public bool FirstRequestLineReceived;
|
||||
public bool FullRequestReceived;
|
||||
|
@ -444,7 +444,7 @@ namespace OSHttpServer
|
|||
if (m_maxRequests == 0)
|
||||
return;
|
||||
|
||||
if(--m_maxRequests == 0)
|
||||
if (--m_maxRequests == 0)
|
||||
m_currentRequest.Connection = ConnectionType.Close;
|
||||
|
||||
if(m_currentRequest.Uri == null)
|
||||
|
@ -527,8 +527,7 @@ namespace OSHttpServer
|
|||
if(contextID < 0)
|
||||
return;
|
||||
|
||||
bool doclose = ctype == ConnectionType.Close;
|
||||
if (doclose)
|
||||
if (ctype == ConnectionType.Close)
|
||||
{
|
||||
m_isClosing = true;
|
||||
m_requests.Clear();
|
||||
|
@ -538,30 +537,21 @@ namespace OSHttpServer
|
|||
else
|
||||
{
|
||||
LastActivityTimeMS = ContextTimeoutManager.EnvironmentTickCount();
|
||||
if (Stream != null && Stream.CanWrite)
|
||||
{
|
||||
ContextTimeoutManager.ContextEnterActiveSend();
|
||||
try
|
||||
{
|
||||
await Stream.FlushAsync().ConfigureAwait(false);
|
||||
}
|
||||
catch
|
||||
{
|
||||
};
|
||||
ContextTimeoutManager.ContextLeaveActiveSend();
|
||||
}
|
||||
|
||||
if (Stream == null || !Stream.CanWrite)
|
||||
return;
|
||||
|
||||
TriggerKeepalive = true;
|
||||
HttpRequest nextRequest = null;
|
||||
lock (m_requestsLock)
|
||||
{
|
||||
if (m_requests != null && m_requests.Count > 0)
|
||||
nextRequest = m_requests.Dequeue();
|
||||
if (nextRequest != null && RequestReceived != null)
|
||||
{
|
||||
m_waitingResponse = true;
|
||||
TriggerKeepalive = false;
|
||||
}
|
||||
else
|
||||
TriggerKeepalive = true;
|
||||
}
|
||||
if (nextRequest != null)
|
||||
RequestReceived?.Invoke(this, new RequestEventArgs(nextRequest));
|
||||
|
|
Loading…
Reference in New Issue