Skip to content

Commit

Permalink
net: don't explicitly set readable/writable
Browse files Browse the repository at this point in the history
  • Loading branch information
ronag committed Mar 14, 2020
1 parent 4fedb70 commit 0866ef1
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 22 deletions.
21 changes: 9 additions & 12 deletions lib/net.js
Original file line number Diff line number Diff line change
Expand Up @@ -285,8 +285,6 @@ function Socket(options) {
else
options = { ...options };

options.readable = options.readable || false;
options.writable = options.writable || false;
const { allowHalfOpen } = options;

// Prevent the "no-half-open enforcer" from being inherited from `Duplex`.
Expand Down Expand Up @@ -366,7 +364,7 @@ function Socket(options) {

// If we have a handle, then start the flow of data into the
// buffer. if not, then this will happen when we connect
if (this._handle && options.readable !== false) {
if (this._handle) {
if (options.pauseOnCreate) {
// Stop the handle from reading and pause the stream
this._handle.reading = false;
Expand Down Expand Up @@ -655,8 +653,6 @@ Socket.prototype._destroy = function(exception, cb) {

this.connecting = false;

this.readable = this.writable = false;

for (let s = this; s !== null; s = s._parent) {
clearTimeout(s[kTimeout]);
}
Expand Down Expand Up @@ -968,7 +964,6 @@ Socket.prototype.connect = function(...args) {
this._unrefTimer();

this.connecting = true;
this.writable = true;

if (pipe) {
validateString(path, 'options.path');
Expand Down Expand Up @@ -1120,9 +1115,13 @@ function afterConnect(status, handle, req, readable, writable) {
self._sockname = null;

if (status === 0) {
self.readable = readable;
if (!self._writableState.ended)
self.writable = writable;
if (!readable) {
self.push(null);
self.read();
}
if (!writable) {
self.end();
}
self._unrefTimer();

self.emit('connect');
Expand Down Expand Up @@ -1544,9 +1543,7 @@ function onconnection(err, clientHandle) {
const socket = new Socket({
handle: clientHandle,
allowHalfOpen: self.allowHalfOpen,
pauseOnCreate: self.pauseOnConnect,
readable: true,
writable: true
pauseOnCreate: self.pauseOnConnect
});

self._connections++;
Expand Down
10 changes: 5 additions & 5 deletions test/parallel/test-net-socket-constructor.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@ function test(sock, readable, writable) {
}

if (cluster.isMaster) {
test(undefined, false, false);
test(undefined, true, true);

const server = net.createServer(common.mustCall((socket) => {
socket.unref();
test(socket, true, true);
test({ handle: socket._handle }, false, false);
test({ handle: socket._handle }, true, true);
test({ handle: socket._handle, readable: true, writable: true },
true, true);
server.close();
Expand All @@ -45,7 +45,7 @@ if (cluster.isMaster) {
socket.end();
}));

test(socket, false, true);
test(socket, true, true);
}));

cluster.setupMaster({
Expand All @@ -58,8 +58,8 @@ if (cluster.isMaster) {
assert.strictEqual(signal, null);
}));
} else {
test(4, false, false);
test({ fd: 5 }, false, false);
test(4, true, true);
test({ fd: 5 }, true, true);
test({ fd: 6, readable: true, writable: true }, true, true);
process.disconnect();
}
15 changes: 10 additions & 5 deletions test/parallel/test-net-socket-setnodelay.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,28 +13,32 @@ const genSetNoDelay = (desiredArg) => (enable) => {
// setNoDelay should default to true
let socket = new net.Socket({
handle: {
setNoDelay: common.mustCall(genSetNoDelay(true))
setNoDelay: common.mustCall(genSetNoDelay(true)),
readStart() {}
}
});
socket.setNoDelay();

socket = new net.Socket({
handle: {
setNoDelay: common.mustCall(genSetNoDelay(true), 1)
setNoDelay: common.mustCall(genSetNoDelay(true), 1),
readStart() {}
}
});
truthyValues.forEach((testVal) => socket.setNoDelay(testVal));

socket = new net.Socket({
handle: {
setNoDelay: common.mustNotCall()
setNoDelay: common.mustNotCall(),
readStart() {}
}
});
falseyValues.forEach((testVal) => socket.setNoDelay(testVal));

socket = new net.Socket({
handle: {
setNoDelay: common.mustCall(() => {}, 3)
setNoDelay: common.mustCall(() => {}, 3),
readStart() {}
}
});
truthyValues.concat(falseyValues).concat(truthyValues)
Expand All @@ -44,7 +48,8 @@ truthyValues.concat(falseyValues).concat(truthyValues)
// In the case below, if it is called an exception will be thrown
socket = new net.Socket({
handle: {
setNoDelay: null
setNoDelay: null,
readStart() {}
}
});
const returned = socket.setNoDelay(true);
Expand Down

0 comments on commit 0866ef1

Please sign in to comment.