comparison src/event/ngx_event_openssl.c @ 634:0d6525917227 NGINX_1_0_7

nginx 1.0.7 *) Change: now if total size of all ranges is greater than source response size, then nginx disables ranges and returns just the source response. *) Feature: the "max_ranges" directive. *) Feature: the module ngx_http_mp4_module. *) Feature: the "worker_aio_requests" directive. *) Bugfix: if nginx was built --with-file-aio it could not be run on Linux kernel which did not support AIO. *) Bugfix: in Linux AIO error processing. Thanks to Hagai Avrahami. *) Bugfix: in Linux AIO combined with open_file_cache. *) Bugfix: open_file_cache did not update file info on retest if file was not atomically changed. *) Bugfix: reduced memory consumption for long-lived requests. *) Bugfix: in the "proxy/fastcgi/scgi/uwsgi_ignore_client_abort" directives. *) Bugfix: nginx could not be built on MacOSX 10.7. *) Bugfix: in the "proxy/fastcgi/scgi/uwsgi_ignore_client_abort" directives. *) Bugfix: request body might be processed incorrectly 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 previous configuration. *) Bugfix: a segmentation fault might occur in a worker process if many backup servers were used in an upstream.
author Igor Sysoev <http://sysoev.ru>
date Fri, 30 Sep 2011 00:00:00 +0400
parents 65fd8be45530
children 692f4d4d7f10
comparison
equal deleted inserted replaced
633:7c3c34755d2e 634:0d6525917227
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);
1204 int n, sslerr, mode; 1203 int n, sslerr, mode;
1205 ngx_err_t err; 1204 ngx_err_t err;
1206 1205
1207 if (c->timedout) { 1206 if (c->timedout) {
1208 mode = SSL_RECEIVED_SHUTDOWN|SSL_SENT_SHUTDOWN; 1207 mode = SSL_RECEIVED_SHUTDOWN|SSL_SENT_SHUTDOWN;
1208 SSL_set_quiet_shutdown(c->ssl->connection, 1);
1209 1209
1210 } else { 1210 } else {
1211 mode = SSL_get_shutdown(c->ssl->connection); 1211 mode = SSL_get_shutdown(c->ssl->connection);
1212 1212
1213 if (c->ssl->no_wait_shutdown) { 1213 if (c->ssl->no_wait_shutdown) {
1214 mode |= SSL_RECEIVED_SHUTDOWN; 1214 mode |= SSL_RECEIVED_SHUTDOWN;
1215 } 1215 }
1216 1216
1217 if (c->ssl->no_send_shutdown) { 1217 if (c->ssl->no_send_shutdown) {
1218 mode |= SSL_SENT_SHUTDOWN; 1218 mode |= SSL_SENT_SHUTDOWN;
1219 }
1220
1221 if (c->ssl->no_wait_shutdown && c->ssl->no_send_shutdown) {
1222 SSL_set_quiet_shutdown(c->ssl->connection, 1);
1219 } 1223 }
1220 } 1224 }
1221 1225
1222 SSL_set_shutdown(c->ssl->connection, mode); 1226 SSL_set_shutdown(c->ssl->connection, mode);
1223 1227
1503 } 1507 }
1504 1508
1505 SSL_CTX_set_timeout(ssl->ctx, (long) timeout); 1509 SSL_CTX_set_timeout(ssl->ctx, (long) timeout);
1506 1510
1507 if (shm_zone) { 1511 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); 1512 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); 1513 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); 1514 SSL_CTX_sess_set_remove_cb(ssl->ctx, ngx_ssl_remove_session);
1513 1515
1514 if (SSL_CTX_set_ex_data(ssl->ctx, ngx_ssl_session_cache_index, shm_zone) 1516 if (SSL_CTX_set_ex_data(ssl->ctx, ngx_ssl_session_cache_index, shm_zone)
1522 1524
1523 return NGX_OK; 1525 return NGX_OK;
1524 } 1526 }
1525 1527
1526 1528
1527 static ngx_int_t 1529 ngx_int_t
1528 ngx_ssl_session_cache_init(ngx_shm_zone_t *shm_zone, void *data) 1530 ngx_ssl_session_cache_init(ngx_shm_zone_t *shm_zone, void *data)
1529 { 1531 {
1530 size_t len; 1532 size_t len;
1531 ngx_slab_pool_t *shpool; 1533 ngx_slab_pool_t *shpool;
1532 ngx_ssl_session_cache_t *cache; 1534 ngx_ssl_session_cache_t *cache;