Skip to content

Commit e5b45d4

Browse files
committed
use endAfterHeaders
1 parent 97c0d7a commit e5b45d4

File tree

4 files changed

+55
-16
lines changed

4 files changed

+55
-16
lines changed

.travis.yml

+1-4
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ before_install:
2626
- "test $TRAVIS_NODE_VERSION != '0.6' || npm rm --save-dev istanbul"
2727
- "test $TRAVIS_NODE_VERSION != '0.8' || npm rm --save-dev istanbul"
2828
- "test $(echo $TRAVIS_NODE_VERSION | cut -d. -f1) -ge 4 || npm rm --save-dev $(grep -E '\"eslint\\S*\"' package.json | cut -d'\"' -f2)"
29-
- "test -z $(echo $HTTP2_TEST) || npm install https://github.com/visionmedia/superagent.git"
3029

3130
# Update Node.js modules
3231
- "test ! -d node_modules || npm prune"
@@ -40,7 +39,5 @@ after_script:
4039
- "test -e ./coverage/lcov.info && npm install coveralls@2 && cat ./coverage/lcov.info | coveralls"
4140
matrix:
4241
include:
43-
- node_js: "9.5"
44-
env: HTTP2_TEST=1
45-
- node_js: "8.9"
42+
- node_js: "10.11"
4643
env: HTTP2_TEST=1

index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ function typeis (value, types_) {
9797
*/
9898

9999
function hasbody (req) {
100-
return (ishttp2(req) && (req.stream.readable || !req.stream._readableState.sync)) ||
100+
return (ishttp2(req) && !req.stream.endAfterHeaders) ||
101101
req.headers['transfer-encoding'] !== undefined ||
102102
!isNaN(req.headers['content-length'])
103103
}

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
"scripts": {
3535
"lint": "eslint --plugin markdown --ext js,md .",
3636
"test": "mocha --reporter spec --check-leaks --bail test/",
37+
"test-http2": "HTTP2_TEST=1 mocha --reporter spec --check-leaks --bail test/",
3738
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
3839
"test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
3940
},

test/test.js

+52-11
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ var Readable
77

88
if (process.env.HTTP2_TEST) {
99
http2 = require('http2')
10-
request = require('superagent')
11-
request.http2 = true
1210
Readable = require('stream').Readable
1311
}
1412

@@ -216,9 +214,11 @@ describe('typeis.hasBody(req)', function () {
216214
assert.strictEqual(typeis.hasBody(req), true)
217215
})
218216

219-
it('should be true when 0', function () {
220-
var req = {headers: {'content-length': '0'}}
221-
assert.strictEqual(typeis.hasBody(req), true)
217+
it('should be true when 0', function (done) {
218+
createZeroLengthBodyRequest('', function (req) {
219+
assert.strictEqual(typeis.hasBody(req), true)
220+
done()
221+
})
222222
})
223223

224224
it('should be false when bogus', function () {
@@ -333,9 +333,15 @@ function createRequest (type, callback) {
333333
var s = new Readable()
334334
s.push('hello')
335335
s.push(null)
336-
var req = request.post('localhost:' + server.address().port + '/')
337-
.set('content-type', type || undefined)
338-
s.pipe(req)
336+
337+
var session = http2.connect('http://localhost:' + server.address().port)
338+
var headers = {
339+
':path': '/',
340+
':method': 'post',
341+
'content-type': type || undefined
342+
}
343+
var request = session.request(headers)
344+
s.pipe(request)
339345
})
340346
} else {
341347
var req = {
@@ -356,9 +362,16 @@ function createBodylessRequest (type, callback) {
356362
})
357363

358364
server = server.listen(function () {
359-
request.get('localhost:' + server.address().port + '/')
360-
.set('content-type', type || undefined)
361-
.end()
365+
var session = http2.connect('http://localhost:' + server.address().port)
366+
var headers = {
367+
':path': '/',
368+
':method': 'get',
369+
'content-type': type || ''
370+
}
371+
var option = {
372+
endStream: true
373+
}
374+
session.request(headers, option)
362375
})
363376
} else {
364377
var req = {
@@ -369,3 +382,31 @@ function createBodylessRequest (type, callback) {
369382
callback(req)
370383
}
371384
}
385+
386+
function createZeroLengthBodyRequest (type, callback) {
387+
if (process.env.HTTP2_TEST) {
388+
var server = http2.createServer(function (req, res) {
389+
callback(req)
390+
server.close()
391+
})
392+
393+
server = server.listen(function () {
394+
var session = http2.connect('http://localhost:' + server.address().port)
395+
var headers = {
396+
':path': '/',
397+
':method': 'get',
398+
'content-type': type || ''
399+
}
400+
var request = session.request(headers)
401+
request.end()
402+
})
403+
} else {
404+
var req = {
405+
headers: {
406+
'content-type': type || '',
407+
'content-length': 0
408+
}
409+
}
410+
callback(req)
411+
}
412+
}

0 commit comments

Comments
 (0)