summaryrefslogtreecommitdiff
path: root/ws
diff options
context:
space:
mode:
authorBert Belder <bertbelder@gmail.com>2019-05-30 18:19:28 -0700
committerBert Belder <bertbelder@gmail.com>2019-05-30 18:35:00 -0700
commit94816457e4599ff32237120bc1e69b875d5c3038 (patch)
treefbcb491e75bf2c117ba779618f0c2d31d145950e /ws
parentaacf92eb11d64b2de39e6291b6352b10dde143e3 (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.ts10
1 files changed, 8 insertions, 2 deletions
diff --git a/ws/mod.ts b/ws/mod.ts
index 86ab2f045..d74e4a92b 100644
--- a/ws/mod.ts
+++ b/ws/mod.ts
@@ -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;