summary refs log tree commit diff
path: root/gateway/src
diff options
context:
space:
mode:
authorMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-08-22 15:33:06 +1000
committerMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-08-22 15:33:06 +1000
commitee98101e4c463910e1ca6dd099de13395cd9fa57 (patch)
tree318eda6258ee651a587accf1c440960269550382 /gateway/src
parentPrevent lazyrequest when sent with guild_id as number (diff)
downloadserver-ee98101e4c463910e1ca6dd099de13395cd9fa57.tar.xz
LazyRequest on mobile + socket not closed fixes
Diffstat (limited to 'gateway/src')
-rw-r--r--gateway/src/events/Message.ts11
-rw-r--r--gateway/src/listener/listener.ts2
-rw-r--r--gateway/src/opcodes/Identify.ts3
-rw-r--r--gateway/src/opcodes/LazyRequest.ts9
4 files changed, 14 insertions, 11 deletions
diff --git a/gateway/src/events/Message.ts b/gateway/src/events/Message.ts

index e9271da4..1a177e0c 100644 --- a/gateway/src/events/Message.ts +++ b/gateway/src/events/Message.ts
@@ -8,6 +8,8 @@ import OPCodeHandlers from "../opcodes"; import { Tuple } from "lambert-server"; import { check } from "../opcodes/instanceOf"; import WS from "ws"; +import BigIntJson from "json-bigint"; +const bigIntJson = BigIntJson({ storeAsString: true }); const PayloadSchema = { op: Number, @@ -30,16 +32,13 @@ export async function Message(this: WebSocket, buffer: WS.Data) { buffer = buffer.toString() as any; } } - data = JSON.parse(buffer as string); + data = bigIntJson.parse(buffer as string); } else if (typeof buffer == "string") { - data = JSON.parse(buffer as string); + data = bigIntJson.parse(buffer as string) } else return; - // TODO: find a way to properly convert a funny number to string - if (data?.op == 14 && typeof data.d.guild_id == "number") return; - check.call(this, PayloadSchema, data); // @ts-ignore @@ -54,7 +53,7 @@ export async function Message(this: WebSocket, buffer: WS.Data) { try { return await OPCodeHandler.call(this, data); } catch (error) { - console.error(error); + console.error(`Error: Op ${data.op}`, error); // if (!this.CLOSED && this.CLOSING) return this.close(CLOSECODES.Unknown_error); } diff --git a/gateway/src/listener/listener.ts b/gateway/src/listener/listener.ts
index 060de65b..8a90ce0c 100644 --- a/gateway/src/listener/listener.ts +++ b/gateway/src/listener/listener.ts
@@ -241,7 +241,7 @@ async function consume(this: WebSocket, opts: EventOpts) { break; } - Send(this, { + await Send(this, { op: OPCODES.Dispatch, t: event, d: data, diff --git a/gateway/src/opcodes/Identify.ts b/gateway/src/opcodes/Identify.ts
index 041512c5..57c45d1f 100644 --- a/gateway/src/opcodes/Identify.ts +++ b/gateway/src/opcodes/Identify.ts
@@ -137,12 +137,13 @@ export async function onIdentify(this: WebSocket, data: Payload) { guilds = guilds.map((guild) => { if (user.bot) { setTimeout(() => { - Send(this, { + var promise = Send(this, { op: OPCODES.Dispatch, t: EVENTEnum.GuildCreate, s: this.sequence++, d: guild, }); + if (promise) promise.catch(console.error); }, 500); return { id: guild.id, unavailable: true }; } diff --git a/gateway/src/opcodes/LazyRequest.ts b/gateway/src/opcodes/LazyRequest.ts
index 0db35286..54b06eb2 100644 --- a/gateway/src/opcodes/LazyRequest.ts +++ b/gateway/src/opcodes/LazyRequest.ts
@@ -39,13 +39,16 @@ async function getMembers(guild_id: string, range: [number, number]) { } catch (e) { console.error(`LazyRequest`, e); + } + + if (!members) { return { items: [], groups: [], range: [], members: [], - } - } + }; + } const groups = [] as any[]; const items = []; @@ -157,7 +160,7 @@ export async function onLazyRequest(this: WebSocket, { d }: Payload) { .flat() .unique(); - return Send(this, { + return await Send(this, { op: OPCODES.Dispatch, s: this.sequence++, t: "GUILD_MEMBER_LIST_UPDATE",