diff options
| author | Bert Belder <bertbelder@gmail.com> | 2019-05-30 18:19:28 -0700 |
|---|---|---|
| committer | Bert Belder <bertbelder@gmail.com> | 2019-05-30 18:35:00 -0700 |
| commit | 94816457e4599ff32237120bc1e69b875d5c3038 (patch) | |
| tree | fbcb491e75bf2c117ba779618f0c2d31d145950e /ws | |
| parent | aacf92eb11d64b2de39e6291b6352b10dde143e3 (diff) | |
io: make port BufReader.readByte() return `number | EOF`
Original: https://github.com/denoland/deno_std/commit/679b2030534c01b8938b34066b127119614eb2d5
Diffstat (limited to 'ws')
| -rw-r--r-- | ws/mod.ts | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -142,6 +142,7 @@ export async function writeFrame( /** Read websocket frame from given BufReader */ export async function readFrame(buf: BufReader): Promise<WebSocketFrame> { let b = await buf.readByte(); + if (b === EOF) throw new UnexpectedEOFError(); let isLastFrame = false; switch (b >>> 4) { case 0b1000: @@ -156,12 +157,17 @@ export async function readFrame(buf: BufReader): Promise<WebSocketFrame> { const opcode = b & 0x0f; // has_mask & payload b = await buf.readByte(); + if (b === EOF) throw new UnexpectedEOFError(); const hasMask = b >>> 7; let payloadLength = b & 0b01111111; if (payloadLength === 126) { - payloadLength = await readShort(buf); + const l = await readShort(buf); + if (l === EOF) throw new UnexpectedEOFError(); + payloadLength = l; } else if (payloadLength === 127) { - payloadLength = await readLong(buf); + const l = await readLong(buf); + if (l === EOF) throw new UnexpectedEOFError(); + payloadLength = Number(l); } // mask let mask; |
