diff --git a/index.js b/index.js index f628e42..dfe6c6b 100644 --- a/index.js +++ b/index.js @@ -276,7 +276,9 @@ function send (req, res, status, headers, message) { // response status res.statusCode = status - res.statusMessage = statuses.message[status] + if (req.httpVersionMajor < 2) { + res.statusMessage = statuses.message[status] + } // remove any content headers res.removeHeader('Content-Encoding') diff --git a/test/test.js b/test/test.js index a815654..46bedfb 100644 --- a/test/test.js +++ b/test/test.js @@ -577,4 +577,45 @@ describe('finalhandler(req, res)', function () { }) }) }) + + describe('HTTP/2', function () { + it('should respond 404 without warning', function (done) { + var warned = false + process.on('warning', function (warning) { + if (warning.name !== 'UnsupportedWarning') return + if (!warning.message.match(/Status message is not supported/)) return + warned = true + }) + + var http2 + try { + http2 = require('http2') + } catch (e) { + return done() + } + + var server = http2.createServer(function (req, res) { + var done = finalhandler(req, res) + done() + }) + + server.listen(0, function () { + var port = server.address().port + var client = http2.connect('http://localhost:' + port) + var req = client.request({ + ':method': 'GET', + ':path': '/foo' + }) + + req.on('response', function (headers) { + assert.strictEqual(headers[':status'], 404) + req.close() + client.close() + server.close() + assert.strictEqual(warned, false) + done() + }) + }) + }) + }) })