From e129fbd0775cf6d2295daa7ca38bbcdf1930b637 Mon Sep 17 00:00:00 2001 From: Lucca Faria Ferri Date: Tue, 1 Aug 2023 09:01:20 -0700 Subject: [PATCH] handshake failure fix --- .../BGS-Server/Base/ConnectHandler.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/DiIiS-NA/BGS-Server/Base/ConnectHandler.cs b/src/DiIiS-NA/BGS-Server/Base/ConnectHandler.cs index 1546a37..df4b1bb 100644 --- a/src/DiIiS-NA/BGS-Server/Base/ConnectHandler.cs +++ b/src/DiIiS-NA/BGS-Server/Base/ConnectHandler.cs @@ -250,6 +250,8 @@ namespace DiIiS_NA.LoginServer.Base } internal class WebSocketServerProtocolHandshakeHandler : ChannelHandlerAdapter { + + static readonly Logger _logger = LogManager.CreateLogger(); private readonly string websocketPath; private readonly string subprotocols; @@ -290,12 +292,16 @@ namespace DiIiS_NA.LoginServer.Base { if (!object.Equals(req.Method, HttpMethod.Get)) { - SendHttpResponse(ctx, req, new DefaultFullHttpResponse(HttpVersion.Http11, HttpResponseStatus.Forbidden)); + SendHttpResponse(ctx, req, + new DefaultFullHttpResponse(HttpVersion.Http11, HttpResponseStatus.Forbidden)); return; } + //v1.rpc.battle.net // - WebSocketServerHandshakerFactory webSocketServerHandshakerFactory = new WebSocketServerHandshakerFactory(GetWebSocketLocation(ctx.Channel.Pipeline, req, websocketPath), subprotocols, allowExtensions, maxFramePayloadSize, allowMaskMismatch); + WebSocketServerHandshakerFactory webSocketServerHandshakerFactory = + new WebSocketServerHandshakerFactory(GetWebSocketLocation(ctx.Channel.Pipeline, req, websocketPath), + subprotocols, allowExtensions, maxFramePayloadSize, allowMaskMismatch); WebSocketServerHandshaker handshaker = webSocketServerHandshakerFactory.NewHandshaker(req); if (handshaker == null) { @@ -303,7 +309,7 @@ namespace DiIiS_NA.LoginServer.Base return; } - handshaker.HandshakeAsync(ctx.Channel, req).ContinueWith(delegate (Task t) + handshaker.HandshakeAsync(ctx.Channel, req).ContinueWith(delegate(Task t) { if (t.Status != TaskStatus.RanToCompletion) { @@ -311,12 +317,17 @@ namespace DiIiS_NA.LoginServer.Base } else { - ctx.FireUserEventTriggered(new HandshakeHandler.HandshakeComplete(req.Uri, req.Headers, handshaker.SelectedSubprotocol)); + ctx.FireUserEventTriggered(new HandshakeHandler.HandshakeComplete(req.Uri, req.Headers, + handshaker.SelectedSubprotocol)); } }, TaskContinuationOptions.ExecuteSynchronously); HandshakeHandler.SetHandshaker(ctx.Channel, handshaker); ctx.Channel.Pipeline.Replace(this, "WS403Responder", HandshakeHandler.ForbiddenHttpRequestResponder()); } + catch (Exception ex) + { + _logger.ErrorException(ex, "Handshake failure"); + } finally { req.Release();