mirror of
https://github.com/nodejs/node.git
synced 2024-11-30 07:27:22 +01:00
abce60cec0
PR-URL: https://github.com/nodejs/node/pull/7467 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Brian White <mscdex@mscdex.net> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
54 lines
1.1 KiB
JavaScript
54 lines
1.1 KiB
JavaScript
'use strict';
|
|
const common = require('../common');
|
|
const http = require('http');
|
|
|
|
let onPause = null;
|
|
|
|
const server = http.createServer((req, res) => {
|
|
if (req.method === 'GET')
|
|
return res.end();
|
|
|
|
res.writeHead(200);
|
|
res.flushHeaders();
|
|
|
|
req.connection.on('pause', () => {
|
|
res.end();
|
|
onPause();
|
|
});
|
|
}).listen(0, common.mustCall(() => {
|
|
const agent = new http.Agent({
|
|
maxSockets: 1,
|
|
keepAlive: true
|
|
});
|
|
|
|
const port = server.address().port;
|
|
|
|
const post = http.request({
|
|
agent,
|
|
method: 'POST',
|
|
port,
|
|
}, common.mustCall((res) => {
|
|
res.resume();
|
|
|
|
post.write(Buffer.alloc(16 * 1024).fill('X'));
|
|
onPause = () => {
|
|
post.end('something');
|
|
};
|
|
}));
|
|
|
|
/* What happens here is that the server `end`s the response before we send
|
|
* `something`, and the client thought that this is a green light for sending
|
|
* next GET request
|
|
*/
|
|
post.write('initial');
|
|
|
|
http.request({
|
|
agent,
|
|
method: 'GET',
|
|
port,
|
|
}, common.mustCall((res) => {
|
|
server.close();
|
|
res.connection.end();
|
|
})).end();
|
|
}));
|