FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

fix: keep idle validation on native timers (#5397) · nodejs/undici@8e4046e · GitHub

/ undici Public

Commit 8e4046e

Browse files
committed
fix: keep idle validation on native timers (#5397)
* fix: keep idle validation on native timers Signed-off-by: Matteo Collina <hello@matteocollina.com> * test: wait for poisoned idle socket disconnect Signed-off-by: Matteo Collina <hello@matteocollina.com> --------- Signed-off-by: Matteo Collina <hello@matteocollina.com> (cherry picked from commit c9fbe9d)
1 parent ea8930c commit 8e4046e

2 files changed

Lines changed: 8 additions & 2 deletions

File tree

‎lib/dispatcher/client-h1.js‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
/* global WebAssembly */
44

55
const assert = require('node:assert')
6+
const { setTimeout: setTimeoutNative, clearTimeout: clearTimeoutNative } = require('node:timers')
67
const util = require('../core/util.js')
78
const { channels } = require('../core/diagnostics.js')
89
const timers = require('../util/timers.js')
@@ -1011,7 +1012,7 @@ function onSocketClose () {
10111012

10121013
function clearIdleSocketValidation (socket) {
10131014
if (socket[kIdleSocketValidationTimeout]) {
1014-
clearTimeout(socket[kIdleSocketValidationTimeout])
1015+
clearTimeoutNative(socket[kIdleSocketValidationTimeout])
10151016
socket[kIdleSocketValidationTimeout] = null
10161017
}
10171018

@@ -1020,7 +1021,7 @@ function clearIdleSocketValidation (socket) {
10201021

10211022
function scheduleIdleSocketValidation (client, socket) {
10221023
socket[kIdleSocketValidation] = 1
1023-
socket[kIdleSocketValidationTimeout] = setTimeout(() => {
1024+
socket[kIdleSocketValidationTimeout] = setTimeoutNative(() => {
10241025
socket[kIdleSocketValidationTimeout] = null
10251026
socket[kIdleSocketValidation] = 2
10261027

‎test/response-queue-poisoning.js‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
'use strict'
22

33
const assert = require('node:assert')
4+
const { once } = require('node:events')
45
const { createServer } = require('node:http')
56
const { after, test } = require('node:test')
67
const { Client } = require('..')
@@ -37,6 +38,8 @@ test('should not reuse an idle socket with buffered unsolicited response bytes',
3738
const response1 = await client.request({ path: '/request1', method: 'GET' })
3839
assert.strictEqual(await readBody(response1.body), '/request1')
3940

41+
const disconnected = once(client, 'disconnect')
42+
4043
evilServerSocket.write(
4144
'HTTP/1.1 200 OK\r\n' +
4245
'Poison-Free-Socket: true\r\n' +
@@ -46,6 +49,8 @@ test('should not reuse an idle socket with buffered unsolicited response bytes',
4649
'\r\n'
4750
)
4851

52+
await disconnected
53+
4954
const response2 = await client.request({ path: '/request2', method: 'GET' })
5055
assert.strictEqual(response2.headers['poison-free-socket'], undefined)
5156
assert.strictEqual(await readBody(response2.body), '/request2')

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL