diff --git a/src/mods/tls.ts b/src/mods/tls.ts index e6ff246..4d0c2ba 100644 --- a/src/mods/tls.ts +++ b/src/mods/tls.ts @@ -174,7 +174,8 @@ export interface DataState extends DataStateData { export interface TlsParams { ciphers: Cipher[] - signal?: AbortSignal + signal?: AbortSignal, + debug?: boolean } export class TlsStream extends EventTarget { @@ -254,6 +255,14 @@ export class TlsStream extends EventTarget { try { this.output.error(error) } catch (e: unknown) { } } + private async onReadStart(controller: TransformStreamDefaultController) { + this._input = controller + } + + private async onWriteStart(controller: TransformStreamDefaultController) { + this._output = controller + } + async handshake() { if (this.state.type !== "none") throw new Error(`Invalid state`) @@ -273,22 +282,18 @@ export class TlsStream extends EventTarget { const finished = new Future() try { + this.addEventListener("error", finished.err, { passive: true }) + this.addEventListener("close", finished.err, { passive: true }) this.addEventListener("finished", finished.ok, { passive: true }) await finished.promise } finally { + this.removeEventListener("error", finished.err) + this.removeEventListener("close", finished.err) this.removeEventListener("finished", finished.ok) } } - private async onReadStart(controller: TransformStreamDefaultController) { - this._input = controller - } - - private async onWriteStart(controller: TransformStreamDefaultController) { - this._output = controller - } - private async onRead(chunk: Uint8Array) { this.wbinary.write(chunk) this.rbinary.view = this.buffer.subarray(0, this.wbinary.offset)