comparison src/event/ngx_event_openssl.c @ 634:23ef0645ea57 NGINX_1_1_1

nginx 1.1.1 *) Change: now cache loader processes either as many files as specified by "loader_files" parameter or works no more than time specified by "loader_threshold" parameter during each iteration. *) Change: now SIGWINCH signal works only in deamon mode. *) Feature: now shared zones and caches use POSIX semaphores on Solaris. Thanks to Den Ivanov. *) Feature: accept filters are now supported on NetBSD. *) Bugfix: nginx could not be build on Linux 3.0. *) Bugfix: nginx did not use gzipping in some cases; the bug had appeared in 1.1.0. *) Bugfix: request body might be incorrectly processed if client used pipelining. *) Bugfix: in the "request_body_in_single_buf" directive. *) Bugfix: in "proxy_set_body" and "proxy_pass_request_body" directives if SSL connection to backend was used. *) Bugfix: nginx hogged CPU if all servers in an upstream were marked as "down". *) Bugfix: a segmentation fault might occur during reconfiguration if ssl_session_cache was defined but not used in a previous configuration. *) Bugfix: a segmentation fault might occur in a worker process if many backup servers were used in an upstream. *) Bugfix: a segmentation fault might occur in a worker process if "fastcgi/scgi/uwsgi_param" directives were used with values starting with "HTTP_"; the bug had appeared in 0.8.40.
author Igor Sysoev <http://sysoev.ru>
date Mon, 22 Aug 2011 00:00:00 +0400
parents 5b73504dd4ba
children 943566b4d82e
comparison
equal deleted inserted replaced
633:561a37709f6d 634:23ef0645ea57
24 static void ngx_ssl_shutdown_handler(ngx_event_t *ev); 24 static void ngx_ssl_shutdown_handler(ngx_event_t *ev);
25 static void ngx_ssl_connection_error(ngx_connection_t *c, int sslerr, 25 static void ngx_ssl_connection_error(ngx_connection_t *c, int sslerr,
26 ngx_err_t err, char *text); 26 ngx_err_t err, char *text);
27 static void ngx_ssl_clear_error(ngx_log_t *log); 27 static void ngx_ssl_clear_error(ngx_log_t *log);
28 28
29 static ngx_int_t ngx_ssl_session_cache_init(ngx_shm_zone_t *shm_zone, 29 ngx_int_t ngx_ssl_session_cache_init(ngx_shm_zone_t *shm_zone, void *data);
30 void *data);
31 static int ngx_ssl_new_session(ngx_ssl_conn_t *ssl_conn, 30 static int ngx_ssl_new_session(ngx_ssl_conn_t *ssl_conn,
32 ngx_ssl_session_t *sess); 31 ngx_ssl_session_t *sess);
33 static ngx_ssl_session_t *ngx_ssl_get_cached_session(ngx_ssl_conn_t *ssl_conn, 32 static ngx_ssl_session_t *ngx_ssl_get_cached_session(ngx_ssl_conn_t *ssl_conn,
34 u_char *id, int len, int *copy); 33 u_char *id, int len, int *copy);
35 static void ngx_ssl_remove_session(SSL_CTX *ssl, ngx_ssl_session_t *sess); 34 static void ngx_ssl_remove_session(SSL_CTX *ssl, ngx_ssl_session_t *sess);
1503 } 1502 }
1504 1503
1505 SSL_CTX_set_timeout(ssl->ctx, (long) timeout); 1504 SSL_CTX_set_timeout(ssl->ctx, (long) timeout);
1506 1505
1507 if (shm_zone) { 1506 if (shm_zone) {
1508 shm_zone->init = ngx_ssl_session_cache_init;
1509
1510 SSL_CTX_sess_set_new_cb(ssl->ctx, ngx_ssl_new_session); 1507 SSL_CTX_sess_set_new_cb(ssl->ctx, ngx_ssl_new_session);
1511 SSL_CTX_sess_set_get_cb(ssl->ctx, ngx_ssl_get_cached_session); 1508 SSL_CTX_sess_set_get_cb(ssl->ctx, ngx_ssl_get_cached_session);
1512 SSL_CTX_sess_set_remove_cb(ssl->ctx, ngx_ssl_remove_session); 1509 SSL_CTX_sess_set_remove_cb(ssl->ctx, ngx_ssl_remove_session);
1513 1510
1514 if (SSL_CTX_set_ex_data(ssl->ctx, ngx_ssl_session_cache_index, shm_zone) 1511 if (SSL_CTX_set_ex_data(ssl->ctx, ngx_ssl_session_cache_index, shm_zone)
1522 1519
1523 return NGX_OK; 1520 return NGX_OK;
1524 } 1521 }
1525 1522
1526 1523
1527 static ngx_int_t 1524 ngx_int_t
1528 ngx_ssl_session_cache_init(ngx_shm_zone_t *shm_zone, void *data) 1525 ngx_ssl_session_cache_init(ngx_shm_zone_t *shm_zone, void *data)
1529 { 1526 {
1530 size_t len; 1527 size_t len;
1531 ngx_slab_pool_t *shpool; 1528 ngx_slab_pool_t *shpool;
1532 ngx_ssl_session_cache_t *cache; 1529 ngx_ssl_session_cache_t *cache;