Skip to content

Commit fba050c

Browse files
authored
fix(node-http-handler): clear obsolete socket timeout listeners (#1531)
* fix(node-http-handler): clear obsolete socket timeout listeners * Add changeset
1 parent 54d2416 commit fba050c

File tree

3 files changed

+9
-0
lines changed

3 files changed

+9
-0
lines changed

.changeset/twenty-peaches-notice.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@smithy/node-http-handler": patch
3+
---
4+
5+
Clear obsolete timeout handlers from socket.

packages/node-http-handler/src/set-socket-timeout.spec.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ describe("setSocketTimeout", () => {
4949
socket: {
5050
setTimeout: vi.fn(),
5151
},
52+
on: vi.fn(),
5253
};
5354

5455
it("calls setTimeout on the socket if it is available after deferral", async () => {
@@ -64,6 +65,8 @@ describe("setSocketTimeout", () => {
6465
expectedDeferredSocketTimeout,
6566
expect.any(Function)
6667
);
68+
expect(clientRequestWithSocket.on).toHaveBeenCalledTimes(1);
69+
expect(clientRequestWithSocket.on).toHaveBeenLastCalledWith("close", expect.any(Function));
6770
});
6871
});
6972

packages/node-http-handler/src/set-socket-timeout.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export const setSocketTimeout = (
1919

2020
if (request.socket) {
2121
request.socket.setTimeout(timeout, onTimeout);
22+
request.on("close", () => request.socket?.removeListener("timeout", onTimeout));
2223
} else {
2324
request.setTimeout(timeout, onTimeout);
2425
}

0 commit comments

Comments
 (0)