Skip to content

Commit 2da7521

Browse files
committed
fix: make pipelining limit work for h2
1 parent 861f782 commit 2da7521

File tree

3 files changed

+10
-6
lines changed

3 files changed

+10
-6
lines changed

lib/dispatcher/client-h1.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -612,7 +612,7 @@ class Parser {
612612
// have been queued since then.
613613
util.destroy(socket, new InformationalError('reset'))
614614
return constants.ERROR.PAUSED
615-
} else if (client[kPipelining] === 1) {
615+
} else if (client[kPipelining] == null || client[kPipelining] === 1) {
616616
// We must wait a full event loop cycle to reuse this socket to make sure
617617
// that non-spec compliant servers are not closing the connection even if they
618618
// said they won't.
@@ -735,6 +735,7 @@ async function connectH1 (client, socket) {
735735

736736
return {
737737
version: 'h1',
738+
defaultPipelining: 1,
738739
write (...args) {
739740
return writeH1(client, ...args)
740741
},

lib/dispatcher/client-h2.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ async function connectH2 (client, socket) {
124124

125125
return {
126126
version: 'h2',
127+
defaultPipelining: Infinity,
127128
write (...args) {
128129
// TODO (fix): return
129130
writeH2(client, ...args)

lib/dispatcher/client.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ const connectH2 = require('./client-h2.js')
6666

6767
const kClosedResolve = Symbol('kClosedResolve')
6868

69+
function getPipelining (client) {
70+
return client[kPipelining] ?? client[kHTTPContext]?.defaultPipelining ?? 1
71+
}
72+
6973
/**
7074
* @type {import('../../types/client.js').default}
7175
*/
@@ -280,7 +284,7 @@ class Client extends DispatcherBase {
280284
const socket = this[kSocket]
281285
return (
282286
(socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) ||
283-
(this[kSize] >= (this[kPipelining] || 1)) ||
287+
(this[kSize] >= (getPipelining(this) || 1)) ||
284288
this[kPending] > 0
285289
)
286290
}
@@ -564,10 +568,8 @@ function _resume (client, sync) {
564568
return
565569
}
566570

567-
if (client[kHTTPContext]?.version === 'h1') {
568-
if (client[kRunning] >= (client[kPipelining] || 1)) {
569-
return
570-
}
571+
if (client[kRunning] >= (getPipelining(client) || 1)) {
572+
return
571573
}
572574

573575
const request = client[kQueue][client[kPendingIdx]]

0 commit comments

Comments
 (0)