Permalink
Browse files

http: fix buffer writes to outgoing messages

  • Loading branch information...
1 parent 71a8a3b commit e6ede31554d2f23d1efe596bd02e8304ff0dc171 @russellhaering russellhaering committed with ry Feb 6, 2011
Showing with 53 additions and 1 deletion.
  1. +1 −1 lib/http.js
  2. +52 −0 test/simple/test-http-client-upload-buf.js
View
@@ -387,7 +387,7 @@ OutgoingMessage.prototype._buffer = function(data, encoding) {
var lastEncoding = this.outputEncodings[length - 1];
var lastData = this.output[length - 1];
- if ((lastEncoding === encoding) ||
+ if ((encoding && lastEncoding === encoding) ||
(!encoding && data.constructor === lastData.constructor)) {
this.output[length - 1] = lastData + data;
return false;
@@ -0,0 +1,52 @@
+var common = require('../common');
+var assert = require('assert');
+var http = require('http');
+
+var N = 1024;
+var bytesRecieved = 0;
+var server_req_complete = false;
+var client_res_complete = false;
+
+var server = http.createServer(function(req, res) {
+ assert.equal('POST', req.method);
+
+ req.addListener('data', function(chunk) {
+ bytesRecieved += chunk.length;
+ });
+
+ req.addListener('end', function() {
+ server_req_complete = true;
+ console.log('request complete from server');
+ res.writeHead(200, {'Content-Type': 'text/plain'});
+ res.write('hello\n');
+ res.end();
+ });
+});
+server.listen(common.PORT);
+
+server.addListener('listening', function() {
+ var client = http.createClient(common.PORT);
+ var req = client.request('POST', '/');
+
+ req.write(new Buffer(N));
+ req.end();
+
+ common.error('client finished sending request');
+
+ req.addListener('response', function(res) {
+ res.setEncoding('utf8');
+ res.addListener('data', function(chunk) {
+ console.log(chunk);
+ });
+ res.addListener('end', function() {
+ client_res_complete = true;
+ server.close();
+ });
+ });
+});
+
+process.addListener('exit', function() {
+ assert.equal(N, bytesRecieved);
+ assert.equal(true, server_req_complete);
+ assert.equal(true, client_res_complete);
+});

0 comments on commit e6ede31

Please sign in to comment.