From 5096e6f88458b108887815e05693d3ff6292d305 Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Tue, 22 Aug 2023 14:07:48 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=9D=9E=20gateway=20?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=8C=85=E5=AF=BC=E8=87=B4=E6=95=B0=E7=BB=84?= =?UTF-8?q?=E8=B6=8A=E7=95=8C=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/server.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/server/server.go b/server/server.go index 78b17ee..7e7585f 100644 --- a/server/server.go +++ b/server/server.go @@ -630,17 +630,22 @@ func (slf *Server) dispatchMessage(msg *Message) { var conn = attrs[0].(*Conn) var packet = attrs[1].([]byte) var wst = int(packet[len(packet)-1]) - var ct = packet[len(packet)-2] - if ct == 0xff { - var gp GP - if err := super.UnmarshalJSON(packet[:len(packet)-2], &gp); err != nil { - panic(err) + if len(packet) >= 2 { + var ct = packet[len(packet)-2] + if ct == 0xff { + var gp GP + if err := super.UnmarshalJSON(packet[:len(packet)-2], &gp); err != nil { + panic(err) + } + packet = gp.D + conn = newGatewayConn(conn, gp.C) + } else { + packet = packet[:len(packet)-1] } - packet = gp.D - conn = newGatewayConn(conn, gp.C) } else { packet = packet[:len(packet)-1] } + if !slf.OnConnectionPacketPreprocessEvent(conn, packet, func(newPacket []byte) { packet = newPacket }) { slf.OnConnectionReceivePacketEvent(conn, Packet{Data: packet, WebsocketType: wst}) }