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// Makes sure that Http2ServerResponse setHeader & removeHeader, do not throw 10// any errors if the stream was destroyed before headers were sent 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 response.on('finish', common.mustCall(() => { 17 assert.strictEqual(response.headersSent, false); 18 response.setHeader('test', 'value'); 19 response.removeHeader('test', 'value'); 20 21 process.nextTick(() => { 22 response.setHeader('test', 'value'); 23 response.removeHeader('test', 'value'); 24 25 server.close(); 26 }); 27 })); 28 29 response.destroy(); 30 })); 31 32 const url = `http://localhost:${port}`; 33 const client = h2.connect(url, common.mustCall(function() { 34 const headers = { 35 ':path': '/', 36 ':method': 'GET', 37 ':scheme': 'http', 38 ':authority': `localhost:${port}` 39 }; 40 const request = client.request(headers); 41 request.on('end', common.mustCall(function() { 42 client.close(); 43 })); 44 request.end(); 45 request.resume(); 46 })); 47})); 48