tls: set _connecting before starting the flow
When creating a TLSSocket instance based on the existing connecting socket, `_connecting` property is copied after the initialization of `net.Socket`. However, since `net.Socket` constructor will call `.read(0)` if the `readable` is true - error may happen at this code chunk in net.js: Socket.prototype._read = function(n) { debug('_read'); if (this._connecting || !this._handle) { debug('_read wait for connection'); this.once('connect', this._read.bind(this, n)); ... Leading to a test failures on windows: - test/simple/test-tls-connect-given-socket.js Signed-off-by: Fedor Indutny <fedor@indutny.com>
This commit is contained in:
parent
2c6b424829
commit
77d1f4a91f
@ -177,8 +177,8 @@ function TLSSocket(socket, options) {
|
|||||||
net.Socket.call(this, {
|
net.Socket.call(this, {
|
||||||
handle: socket && socket._handle,
|
handle: socket && socket._handle,
|
||||||
allowHalfOpen: socket && socket.allowHalfOpen,
|
allowHalfOpen: socket && socket.allowHalfOpen,
|
||||||
readable: true,
|
readable: false,
|
||||||
writable: true
|
writable: false
|
||||||
});
|
});
|
||||||
|
|
||||||
// To prevent assertion in afterConnect()
|
// To prevent assertion in afterConnect()
|
||||||
@ -210,6 +210,12 @@ function TLSSocket(socket, options) {
|
|||||||
} else {
|
} else {
|
||||||
this._init(socket);
|
this._init(socket);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Make sure to setup all required properties like: `_connecting` before
|
||||||
|
// starting the flow of the data
|
||||||
|
this.readable = true;
|
||||||
|
this.writable = true;
|
||||||
|
this.read(0);
|
||||||
}
|
}
|
||||||
util.inherits(TLSSocket, net.Socket);
|
util.inherits(TLSSocket, net.Socket);
|
||||||
exports.TLSSocket = TLSSocket;
|
exports.TLSSocket = TLSSocket;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user