浏览代码

Handle unexpected disconnect

Bond-009 5 年之前
父节点
当前提交
bdd823d22f

+ 1 - 1
Emby.Server.Implementations/HttpServer/HttpListenerHost.cs

@@ -540,7 +540,7 @@ namespace Emby.Server.Implementations.HttpServer
             }
             }
             catch (Exception ex) // Otherwise ASP.Net will ignore the exception
             catch (Exception ex) // Otherwise ASP.Net will ignore the exception
             {
             {
-                _logger.LogError(ex, "WS {IP} WebSocketRequestHandler error");
+                _logger.LogError(ex, "WS {IP} WebSocketRequestHandler error", context.Connection.RemoteIpAddress);
                 if (!context.Response.HasStarted)
                 if (!context.Response.HasStarted)
                 {
                 {
                     context.Response.StatusCode = 500;
                     context.Response.StatusCode = 500;

+ 10 - 1
Emby.Server.Implementations/HttpServer/WebSocketConnection.cs

@@ -116,7 +116,16 @@ namespace Emby.Server.Implementations.HttpServer
             {
             {
                 // Allocate at least 512 bytes from the PipeWriter
                 // Allocate at least 512 bytes from the PipeWriter
                 Memory<byte> memory = writer.GetMemory(512);
                 Memory<byte> memory = writer.GetMemory(512);
-                receiveresult = await _socket.ReceiveAsync(memory, cancellationToken);
+                try
+                {
+                    receiveresult = await _socket.ReceiveAsync(memory, cancellationToken);
+                }
+                catch (WebSocketException ex)
+                {
+                    _logger.LogWarning("WS {IP} error receiving data: {Message}", RemoteEndPoint, ex.Message);
+                    break;
+                }
+
                 int bytesRead = receiveresult.Count;
                 int bytesRead = receiveresult.Count;
                 if (bytesRead == 0)
                 if (bytesRead == 0)
                 {
                 {