From 17254ee863de91838eba69c57d875e7f93eac2da Mon Sep 17 00:00:00 2001 From: "roberto@precise64" Date: Sun, 20 May 2012 20:31:20 +0200 Subject: [PATCH] added support for ssl session caching --- plugins/http/http.c | 2 +- utils.c | 12 +++++++++++- uwsgi.h | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/plugins/http/http.c b/plugins/http/http.c index a9f49b5c..8e77b939 100644 --- a/plugins/http/http.c +++ b/plugins/http/http.c @@ -63,7 +63,7 @@ void uwsgi_opt_https(char *opt, char *value, void *cr) { } // initialize ssl context - ugs->ctx = uwsgi_ssl_new_server_context(crt, key, ciphers); + ugs->ctx = uwsgi_ssl_new_server_context(uwsgi_concat3(ucr->short_name, "-", ugs->name),crt, key, ciphers); // the clients must be put in non-blocking mode ugs->nb = 1; // set the ssl mode diff --git a/utils.c b/utils.c index 4ce80570..1e087562 100644 --- a/utils.c +++ b/utils.c @@ -4319,7 +4319,7 @@ void uwsgi_ssl_info_cb(SSL const *ssl, int where, int ret) { } } -SSL_CTX *uwsgi_ssl_new_server_context(char *crt, char *key, char *ciphers) { +SSL_CTX *uwsgi_ssl_new_server_context(char *name, char *crt, char *key, char *ciphers) { SSL_CTX *ctx = SSL_CTX_new(SSLv23_server_method()); if (!ctx) { @@ -4381,6 +4381,16 @@ SSL_CTX *uwsgi_ssl_new_server_context(char *crt, char *key, char *ciphers) { SSL_CTX_set_info_callback(ctx, uwsgi_ssl_info_cb); + if (name) { + SSL_CTX_set_session_id_context(ctx, (unsigned char *)name, strlen(name)); + SSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_SERVER); +#ifdef UWSGI_DEBUG + uwsgi_log("[uwsgi-ssl] initialized ssl session cache: %s\n", name); +#endif + //SSL_CTX_set_timeout + //SSL_CTX_sess_set_cache_size + } + return ctx; } diff --git a/uwsgi.h b/uwsgi.h index a7cab032..3f9d8b87 100644 --- a/uwsgi.h +++ b/uwsgi.h @@ -2884,7 +2884,7 @@ char *uwsgi_substitute(char *, char *, char *); #include "openssl/conf.h" #include "openssl/ssl.h" void uwsgi_ssl_init(void); -SSL_CTX *uwsgi_ssl_new_server_context(char *, char *, char *); +SSL_CTX *uwsgi_ssl_new_server_context(char *, char *, char *, char *); #endif #ifdef UWSGI_AS_SHARED_LIBRARY