1'use strict'; 2 3const common = require('../common'); 4if (!common.hasCrypto) 5 common.skip('missing crypto'); 6const assert = require('assert'); 7const h2 = require('http2'); 8 9// Http2ServerRequest should always end readable stream 10// even on GET requests with no body 11 12const server = h2.createServer(); 13server.listen(0, common.mustCall(function() { 14 const port = server.address().port; 15 server.once('request', common.mustCall(function(request, response) { 16 assert.strictEqual(request.complete, false); 17 request.on('data', () => {}); 18 request.on('end', common.mustCall(() => { 19 assert.strictEqual(request.complete, true); 20 response.on('finish', common.mustCall(function() { 21 // The following tests edge cases on request socket 22 // right after finished fires but before backing 23 // Http2Stream is destroyed 24 assert.strictEqual(request.socket.readable, request.stream.readable); 25 assert.strictEqual(request.socket.readable, false); 26 27 server.close(); 28 })); 29 assert.strictEqual(response.end(), response); 30 })); 31 })); 32 33 const url = `http://localhost:${port}`; 34 const client = h2.connect(url, common.mustCall(() => { 35 const request = client.request(); 36 request.resume(); 37 request.on('end', common.mustCall(() => { 38 client.close(); 39 })); 40 })); 41})); 42