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>
This commit is contained in:
parent
3202456baa
commit
a713024579
@ -727,6 +727,9 @@ Socket.prototype.__defineGetter__('bytesWritten', function() {
|
|||||||
data = this._pendingData,
|
data = this._pendingData,
|
||||||
encoding = this._pendingEncoding;
|
encoding = this._pendingEncoding;
|
||||||
|
|
||||||
|
if (!state)
|
||||||
|
return undefined;
|
||||||
|
|
||||||
state.getBuffer().forEach(function(el) {
|
state.getBuffer().forEach(function(el) {
|
||||||
if (el.chunk instanceof Buffer)
|
if (el.chunk instanceof Buffer)
|
||||||
bytes += el.chunk.length;
|
bytes += el.chunk.length;
|
||||||
|
16
test/parallel/test-net-access-byteswritten.js
Normal file
16
test/parallel/test-net-access-byteswritten.js
Normal file
@ -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…
x
Reference in New Issue
Block a user