Browse Source

http: add flushHeaders and deprecate flush

PR-URL: https://github.com/iojs/io.js/pull/1156
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Christian Tellnes <christian@tellnes.no>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
v1.8.0-commit
Yosuke Furukawa 10 years ago
committed by Ben Noordhuis
parent
commit
b2e00e38dc
  1. 4
      doc/api/http.markdown
  2. 6
      lib/_http_outgoing.js
  3. 20
      test/parallel/test-http-flush-headers.js

4
doc/api/http.markdown

@ -866,7 +866,7 @@ the client should send the request body.
Emitted when the request has been aborted by the client. This event is only Emitted when the request has been aborted by the client. This event is only
emitted on the first call to `abort()`. emitted on the first call to `abort()`.
### request.flush() ### request.flushHeaders()
Flush the request headers. Flush the request headers.
@ -875,7 +875,7 @@ call `request.end()` or write the first chunk of request data. It then tries
hard to pack the request headers and data into a single TCP packet. hard to pack the request headers and data into a single TCP packet.
That's usually what you want (it saves a TCP round-trip) but not when the first That's usually what you want (it saves a TCP round-trip) but not when the first
data isn't sent until possibly much later. `request.flush()` lets you bypass data isn't sent until possibly much later. `request.flushHeaders()` lets you bypass
the optimization and kickstart the request. the optimization and kickstart the request.
### request.write(chunk[, encoding][, callback]) ### request.write(chunk[, encoding][, callback])

6
lib/_http_outgoing.js

@ -630,10 +630,14 @@ OutgoingMessage.prototype._flush = function() {
}; };
OutgoingMessage.prototype.flush = function() { OutgoingMessage.prototype.flushHeaders = function() {
if (!this._header) { if (!this._header) {
// Force-flush the headers. // Force-flush the headers.
this._implicitHeader(); this._implicitHeader();
this._send(''); this._send('');
} }
}; };
OutgoingMessage.prototype.flush = util.deprecate(function() {
this.flushHeaders();
}, 'flush is deprecated. Use flushHeaders instead.');

20
test/parallel/test-http-flush-headers.js

@ -0,0 +1,20 @@
'use strict';
const common = require('../common');
const assert = require('assert');
const http = require('http');
const server = http.createServer();
server.on('request', function(req, res){
assert(req.headers['foo'], 'bar');
res.end('ok');
server.close();
});
server.listen(common.PORT, '127.0.0.1', function() {
let req = http.request({
method: 'GET',
host: '127.0.0.1',
port: common.PORT,
});
req.setHeader('foo', 'bar');
req.flushHeaders();
});
Loading…
Cancel
Save