mirror of
https://github.com/brianc/node-postgres.git
synced 2025-12-08 20:16:25 +00:00
Fix JavaScript SSL upgrade logic
I had accepted the pull request way back without proper test coverage. I've added test coverage & fixed this long-standing bug.
This commit is contained in:
parent
53a772af49
commit
44784fa2f3
@ -53,41 +53,30 @@ Connection.prototype.connect = function(port, host) {
|
||||
self.emit('end');
|
||||
});
|
||||
|
||||
if(this.ssl) {
|
||||
this.stream.once('data', function(buffer) {
|
||||
self.setBuffer(buffer);
|
||||
var msg = self.readSslResponse();
|
||||
self.emit('message', msg);
|
||||
self.emit(msg.name, msg);
|
||||
});
|
||||
this.once('sslresponse', function(msg) {
|
||||
if(msg.text == 0x53) {
|
||||
var tls = require('tls');
|
||||
self.stream.removeAllListeners();
|
||||
self.stream = tls.connect({
|
||||
socket: self.stream,
|
||||
servername: host,
|
||||
rejectUnauthorized: self.ssl.rejectUnauthorized,
|
||||
ca: self.ssl.ca,
|
||||
pfx: self.ssl.pfx,
|
||||
key: self.ssl.key,
|
||||
passphrase: self.ssl.passphrase,
|
||||
cert: self.ssl.cert,
|
||||
NPNProtocols: self.ssl.NPNProtocols
|
||||
});
|
||||
self.attachListeners(self.stream);
|
||||
self.emit('sslconnect');
|
||||
} else {
|
||||
self.emit(
|
||||
'error',
|
||||
new Error("The server doesn't support SSL/TLS connections.")
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
this.attachListeners(this.stream);
|
||||
if(!this.ssl) {
|
||||
return this.attachListeners(this.stream);
|
||||
}
|
||||
|
||||
this.stream.once('data', function(buffer) {
|
||||
var responseCode = buffer.toString('utf8');
|
||||
if(responseCode != 'S') {
|
||||
return self.emit('error', new Error('The server does not support SSL connections'));
|
||||
}
|
||||
var tls = require('tls');
|
||||
self.stream = tls.connect({
|
||||
socket: self.stream,
|
||||
servername: host,
|
||||
rejectUnauthorized: self.ssl.rejectUnauthorized,
|
||||
ca: self.ssl.ca,
|
||||
pfx: self.ssl.pfx,
|
||||
key: self.ssl.key,
|
||||
passphrase: self.ssl.passphrase,
|
||||
cert: self.ssl.cert,
|
||||
NPNProtocols: self.ssl.NPNProtocols
|
||||
});
|
||||
self.attachListeners(self.stream);
|
||||
self.emit('sslconnect');
|
||||
});
|
||||
};
|
||||
|
||||
Connection.prototype.attachListeners = function(stream) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user