Skip to content

Commit d54d12c

Browse files
fix: prevent socket from reconnecting after middleware failure
Related: socketio/socket.io#4150
1 parent ccf7998 commit d54d12c

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

lib/socket.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ export class Socket<
322322
break;
323323

324324
case PacketType.CONNECT_ERROR:
325+
this.destroy();
325326
const err = new Error(packet.data.message);
326327
// @ts-ignore
327328
err.data = packet.data.data;

test/socket.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,23 @@ describe("socket", function () {
214214
});
215215
});
216216

217+
it("should not try to reconnect after a middleware failure", (done) => {
218+
const socket = io("/no", { forceNew: true, reconnectionDelay: 10 });
219+
220+
let count = 0;
221+
222+
socket.on("connect_error", () => {
223+
count++;
224+
// force reconnection
225+
socket.io.engine.close();
226+
});
227+
228+
setTimeout(() => {
229+
expect(count).to.eql(1);
230+
done();
231+
}, 100);
232+
});
233+
217234
it("should throw on reserved event", () => {
218235
const socket = io("/no", { forceNew: true });
219236

0 commit comments

Comments
 (0)