Skip to content

Commit c2360bd

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

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

lib/dispatcher/client.js

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

6767
const kClosedResolve = Symbol('kClosedResolve')
6868

69+
function getPipelining (client) {
70+
return client[kPipelining] ??
71+
(client[kHTTPContext]?.version === 'h2' ? Infinity : null) ??
72+
(client[kHTTPContext]?.version === 'h1' ? Infinity : null) ??
73+
0
74+
}
75+
6976
/**
7077
* @type {import('../../types/client.js').default}
7178
*/
@@ -213,7 +220,7 @@ class Client extends DispatcherBase {
213220
this[kUrl] = util.parseOrigin(url)
214221
this[kConnector] = connect
215222
this[kSocket] = null
216-
this[kPipelining] = pipelining != null ? pipelining : 1
223+
this[kPipelining] = pipelining
217224
this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize
218225
this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout
219226
this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout
@@ -280,7 +287,7 @@ class Client extends DispatcherBase {
280287
const socket = this[kSocket]
281288
return (
282289
(socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) ||
283-
(this[kSize] >= (this[kPipelining] || 1)) ||
290+
(this[kSize] >= getPipelining(this)) ||
284291
this[kPending] > 0
285292
)
286293
}
@@ -564,10 +571,8 @@ function _resume (client, sync) {
564571
return
565572
}
566573

567-
if (client[kHTTPContext]?.version === 'h1') {
568-
if (client[kRunning] >= (client[kPipelining] || 1)) {
569-
return
570-
}
574+
if (client[kRunning] >= getPipelining(client)) {
575+
return
571576
}
572577

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

0 commit comments

Comments
 (0)