diff --git a/lib/server.ts b/lib/server.ts index c09b2e1d..44ce2ee6 100644 --- a/lib/server.ts +++ b/lib/server.ts @@ -245,6 +245,13 @@ export abstract class BaseServer extends EventEmitter { }); } + if (transport === "websocket" && !upgrade) { + debug("invalid transport upgrade"); + return fn(Server.errors.BAD_REQUEST, { + name: "TRANSPORT_HANDSHAKE_ERROR" + }); + } + if (!this.opts.allowRequest) return fn(); return this.opts.allowRequest(req, (message, success) => { diff --git a/lib/userver.ts b/lib/userver.ts index 76c9a41d..d28b5ff1 100644 --- a/lib/userver.ts +++ b/lib/userver.ts @@ -28,6 +28,10 @@ export class uServer extends BaseServer { req.connection = { remoteAddress: Buffer.from(res.getRemoteAddressAsText()).toString() }; + + res.onAborted(() => { + debug("response has been aborted"); + }); } protected createTransport(transportName, req) { diff --git a/test/server.js b/test/server.js index 05f5d7bf..3aff7c0e 100644 --- a/test/server.js +++ b/test/server.js @@ -603,9 +603,6 @@ describe("server", () => { }); it("should disallow bad requests (handshake error)", function(done) { - if (process.env.EIO_WS_ENGINE === "uws") { - return this.skip(); - } const partialDone = createPartialDone(done, 2); engine = listen( @@ -618,8 +615,6 @@ describe("server", () => { expect(err.code).to.be(3); expect(err.message).to.be("Bad request"); expect(err.context.name).to.be("TRANSPORT_HANDSHAKE_ERROR"); - expect(err.context.error).to.be.an(Error); - expect(err.context.error.name).to.be("TypeError"); partialDone(); });