GeezerVison is showing github.com — http: wait for pending responses in closeIdleConnections · nodejs/node@9c699bd
File tree
Expand file treeCollapse file tree
Open diff view settings
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboardExpand all lines: lib/_http_server.js +4Lines changed: 4 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -494,6 +494,10 @@ Server.prototype.closeIdleConnections = function() { |
494 | 494 | const connections = this[kConnections].idle(); |
495 | 495 |
|
496 | 496 | for (let i = 0, l = connections.length; i < l; i++) { |
| 497 | + if (connections[i].socket._httpMessage && !connections[i].socket._httpMessage.finished) { |
| 498 | + continue; |
| 499 | + } |
| 500 | + |
497 | 501 | connections[i].socket.destroy(); |
498 | 502 | } |
499 | 503 | }; |
|
Collapse file
Copy file name to clipboard +26Lines changed: 26 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
|
| 1 | +'use strict'; |
| 2 | + |
| 3 | +const common = require('../common'); |
| 4 | + |
| 5 | +const { createServer, get } = require('http'); |
| 6 | + |
| 7 | +const server = createServer(common.mustCall(function(req, res) { |
| 8 | + req.resume(); |
| 9 | + |
| 10 | + setTimeout(common.mustCall(() => { |
| 11 | + res.writeHead(204, { 'Connection': 'keep-alive', 'Keep-Alive': 'timeout=1' }); |
| 12 | + res.end(); |
| 13 | + }), common.platformTimeout(1000)); |
| 14 | +})); |
| 15 | + |
| 16 | +server.listen(0, function() { |
| 17 | + const port = server.address().port; |
| 18 | + |
| 19 | + get(`http://localhost:${port}`, common.mustCall((res) => { |
| 20 | + server.close(); |
| 21 | + })).on('finish', common.mustCall(() => { |
| 22 | + setTimeout(common.mustCall(() => { |
| 23 | + server.closeIdleConnections(); |
| 24 | + }), common.platformTimeout(500)); |
| 25 | + })); |
| 26 | +}); |