Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

[tls] share SSL context between server's connections #1073

Closed
wants to merge 1 commit into from

2 participants

Fedor Indutny ry
Fedor Indutny
Owner

As you asked me on IRC.

It's not low-level change as you has expected, but should done it's work too!

ry ry closed this in 21724ec
ry
ry commented

thanks! sorry it took so long

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on May 19, 2011
  1. Fedor Indutny
This page is out of date. Refresh to see the latest.
Showing with 30 additions and 17 deletions.
  1. +15 −9 lib/crypto.js
  2. +15 −8 lib/tls.js
24 lib/crypto.js
View
@@ -36,7 +36,7 @@ try {
}
-function Credentials(secureProtocol) {
+function Credentials(secureProtocol, context) {
if (!(this instanceof Credentials)) {
return new Credentials(secureProtocol);
}
@@ -45,22 +45,28 @@ function Credentials(secureProtocol) {
throw new Error('node.js not compiled with openssl crypto support.');
}
- this.context = new SecureContext();
-
- if (secureProtocol) {
- this.context.init(secureProtocol);
+ if (context) {
+ this.context = context;
+ this.reuseContext = true;
} else {
- this.context.init();
- }
+ this.context = new SecureContext();
+ if (secureProtocol) {
+ this.context.init(secureProtocol);
+ } else {
+ this.context.init();
+ }
+ }
}
exports.Credentials = Credentials;
-exports.createCredentials = function(options) {
+exports.createCredentials = function(options, context) {
if (!options) options = {};
- var c = new Credentials(options.secureProtocol);
+ var c = new Credentials(options.secureProtocol, context);
+
+ if (context) return c;
if (options.key) c.context.setKey(options.key);
23 lib/tls.js
View
@@ -713,16 +713,23 @@ function Server(/* [options], listener */) {
var self = this;
+ // Handle option defaults:
+ this.setOptions(options);
+
+ var sharedCreds = crypto.createCredentials({
+ key: self.key,
+ cert: self.cert,
+ ca: self.ca,
+ ciphers: self.ciphers,
+ secureProtocol: self.secureProtocol,
+ crl: self.crl
+ });
+
+ sharedCreds.context.setCiphers('RC4-SHA:AES128-SHA:AES256-SHA');
+
// constructor call
net.Server.call(this, function(socket) {
- var creds = crypto.createCredentials({
- key: self.key,
- cert: self.cert,
- ca: self.ca,
- secureProtocol: self.secureProtocol,
- crl: self.crl
- });
- creds.context.setCiphers('RC4-SHA:AES128-SHA:AES256-SHA');
+ var creds = crypto.createCredentials(null, sharedCreds.context);
var pair = new SecurePair(creds,
true,
Something went wrong with that request. Please try again.