Compare commits

...

1 Commits

Author SHA1 Message Date
Cursor Agent
61a531e580 Add automatic keep-alive header when shouldKeepAlive is true 2025-05-29 07:04:56 +00:00
2 changed files with 36 additions and 0 deletions

View File

@@ -1550,6 +1550,12 @@ function _writeHead(statusCode, reason, obj, response) {
}
}
// Automatically add Connection: keep-alive header if shouldKeepAlive is true
// and no Connection header has been set
if (response.shouldKeepAlive && !response.hasHeader("connection")) {
response.setHeader("Connection", "keep-alive");
}
updateHasBody(response, statusCode);
}

View File

@@ -0,0 +1,30 @@
const common = require('../common');
const assert = require('assert');
const http = require('http');
const server = http.createServer(common.mustCall((req, res) => {
res.setHeader('X-Date', 'foo');
res.setHeader('X-Connection', 'bar');
res.setHeader('X-Content-Length', 'baz');
res.end();
}));
server.listen(0);
server.on('listening', common.mustCall(() => {
const agent = new http.Agent({ port: server.address().port, maxSockets: 1 });
http.get({
port: server.address().port,
path: '/hello',
agent: agent
}, common.mustCall((res) => {
assert.strictEqual(res.statusCode, 200);
assert.strictEqual(res.headers['x-date'], 'foo');
assert.strictEqual(res.headers['x-connection'], 'bar');
assert.strictEqual(res.headers['x-content-length'], 'baz');
assert(res.headers.date);
assert.strictEqual(res.headers.connection, 'keep-alive');
assert.strictEqual(res.headers['content-length'], '0');
server.close();
agent.destroy();
}));
}));