Skip to content

Commit 5112516

Browse files
committed
SniReaderStream.cs: return 0 when asked to retrieve 0 bytes. This seems to fix a buggy interaction between SslStream (which asks for 0 bytes) and NetworkStream (which seems to sometimes hang and then timeout when you do that).
1 parent db1ff94 commit 5112516

2 files changed

Lines changed: 192 additions & 274 deletions

File tree

Src/HttpServer.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ private void constructorTryBlock(Socket socket, HttpServer server, bool secure)
449449
_stream = secureStream;
450450

451451
secureStream.BeginAuthenticateAsServer(
452-
// select the most appropriate certificate.
452+
// Select the most appropriate certificate
453453
serverCertificate: server.Options.CertificateResolver?.Invoke(sniHost)
454454
?? server.Options.Certificates?.Get(sniHost, null)?.GetCertificate()
455455
?? server.Options.Certificate?.GetCertificate(),
@@ -500,7 +500,6 @@ private void asyncCallbackTryBlock(IAsyncResult ar, SslStream secureStream)
500500
}
501501
catch (Exception e)
502502
{
503-
504503
Socket.Close();
505504
_server.ResponseExceptionHandler?.Invoke(null, e, null);
506505
return;
@@ -630,7 +629,7 @@ private void cleanupIfDone()
630629
/// whatever got received.</summary>
631630
private void processHeaderData()
632631
{
633-
start:;
632+
start:;
634633

635634
// Request more header data if we have none
636635
// (This only happens if we just finished a request and are in a keep-alive connection which has
@@ -751,7 +750,7 @@ private void processHeaderData()
751750
return;
752751
}
753752

754-
notWebsocket:
753+
notWebsocket:
755754
var responseContent = (HttpResponseContent) response;
756755
try { connectionKeepAlive = outputResponse(responseContent, responseContent.Status, headers, contentStream, responseContent.UseGzip, originalRequest); }
757756
catch (SocketException) { Socket.Close(); return; }

0 commit comments

Comments
 (0)