Browse Source

net: don't throw on bytesWritten access

If bytesWritten is accessed before the object has been properly
constructed then return undefined.

Fixes: https://github.com/nodejs/node/issues/3298
PR-URL: https://github.com/nodejs/node/pull/3305
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
v5.x
Trevor Norris 9 years ago
parent
commit
a713024579
  1. 3
      lib/net.js
  2. 16
      test/parallel/test-net-access-byteswritten.js

3
lib/net.js

@ -727,6 +727,9 @@ Socket.prototype.__defineGetter__('bytesWritten', function() {
data = this._pendingData,
encoding = this._pendingEncoding;
if (!state)
return undefined;
state.getBuffer().forEach(function(el) {
if (el.chunk instanceof Buffer)
bytes += el.chunk.length;

16
test/parallel/test-net-access-byteswritten.js

@ -0,0 +1,16 @@
'use strict';
require('../common');
const assert = require('assert');
const net = require('net');
const tls = require('tls');
const tty = require('tty');
// Check that the bytesWritten getter doesn't crash if object isn't
// constructed.
assert.strictEqual(net.Socket.prototype.bytesWritten, undefined);
assert.strictEqual(tls.TLSSocket.super_.prototype.bytesWritten, undefined);
assert.strictEqual(tls.TLSSocket.prototype.bytesWritten, undefined);
assert.strictEqual(tty.ReadStream.super_.prototype.bytesWritten, undefined);
assert.strictEqual(tty.ReadStream.prototype.bytesWritten, undefined);
assert.strictEqual(tty.WriteStream.prototype.bytesWritten, undefined);
Loading…
Cancel
Save