Skip to content

Commit bbdc8d9

Browse files
more clean up
1 parent 4cd4cb3 commit bbdc8d9

1 file changed

Lines changed: 19 additions & 5 deletions

File tree

packages/engine.io/lib/server.ts

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -560,18 +560,32 @@ export abstract class BaseServer extends EventEmitter {
560560
);
561561
const reader = stream.readable.pipeThrough(transformStream).getReader();
562562

563+
const closeSession = async () => {
564+
try {
565+
await reader.cancel();
566+
} catch (e) {
567+
debug(
568+
"error while canceling WebTransport stream reader: %s",
569+
e.message,
570+
);
571+
}
572+
reader.releaseLock();
573+
session.close();
574+
};
575+
563576
// reading the first packet of the stream
564577
const { value, done } = await reader.read();
565578
clearTimeout(timeout);
566579

567580
if (done) {
568581
debug("stream is closed");
582+
reader.releaseLock();
569583
return;
570584
}
571585

572586
if (value.type !== "open") {
573587
debug("invalid WebTransport handshake");
574-
return session.close();
588+
return closeSession();
575589
}
576590

577591
if (value.data === undefined) {
@@ -599,20 +613,20 @@ export abstract class BaseServer extends EventEmitter {
599613

600614
if (!sid || !hasOwn(this.clients, sid)) {
601615
debug("invalid WebTransport handshake");
602-
return session.close();
616+
return closeSession();
603617
}
604618

605619
const client = this.clients[sid];
606620

607621
if (!client) {
608622
debug("upgrade attempt for closed client");
609-
session.close();
623+
return closeSession();
610624
} else if (client.upgrading) {
611625
debug("transport has already been trying to upgrade");
612-
session.close();
626+
return closeSession();
613627
} else if (client.upgraded) {
614628
debug("transport had already been upgraded");
615-
session.close();
629+
return closeSession();
616630
} else {
617631
debug("upgrading existing transport");
618632

0 commit comments

Comments
 (0)