Mercurial > hg > nginx-quic
comparison src/event/ngx_event_openssl.c @ 1755:59e36c1c6296
cleaning stale global SSL error
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Thu, 20 Dec 2007 13:04:20 +0000 |
parents | 427d442e1ad8 |
children | f28ba0f698f3 |
comparison
equal
deleted
inserted
replaced
1754:427d442e1ad8 | 1755:59e36c1c6296 |
---|---|
20 static void ngx_ssl_write_handler(ngx_event_t *wev); | 20 static void ngx_ssl_write_handler(ngx_event_t *wev); |
21 static void ngx_ssl_read_handler(ngx_event_t *rev); | 21 static void ngx_ssl_read_handler(ngx_event_t *rev); |
22 static void ngx_ssl_shutdown_handler(ngx_event_t *ev); | 22 static void ngx_ssl_shutdown_handler(ngx_event_t *ev); |
23 static void ngx_ssl_connection_error(ngx_connection_t *c, int sslerr, | 23 static void ngx_ssl_connection_error(ngx_connection_t *c, int sslerr, |
24 ngx_err_t err, char *text); | 24 ngx_err_t err, char *text); |
25 static void ngx_ssl_clear_error(ngx_log_t *log); | |
25 | 26 |
26 static ngx_int_t ngx_ssl_session_cache_init(ngx_shm_zone_t *shm_zone, | 27 static ngx_int_t ngx_ssl_session_cache_init(ngx_shm_zone_t *shm_zone, |
27 void *data); | 28 void *data); |
28 static int ngx_ssl_new_session(ngx_ssl_conn_t *ssl_conn, | 29 static int ngx_ssl_new_session(ngx_ssl_conn_t *ssl_conn, |
29 ngx_ssl_session_t *sess); | 30 ngx_ssl_session_t *sess); |
402 ngx_ssl_handshake(ngx_connection_t *c) | 403 ngx_ssl_handshake(ngx_connection_t *c) |
403 { | 404 { |
404 int n, sslerr; | 405 int n, sslerr; |
405 ngx_err_t err; | 406 ngx_err_t err; |
406 | 407 |
408 ngx_ssl_clear_error(c->log); | |
409 | |
407 n = SSL_do_handshake(c->ssl->connection); | 410 n = SSL_do_handshake(c->ssl->connection); |
408 | 411 |
409 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL_do_handshake: %d", n); | 412 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL_do_handshake: %d", n); |
410 | 413 |
411 if (n == 1) { | 414 if (n == 1) { |
602 c->read->eof = 1; | 605 c->read->eof = 1; |
603 return 0; | 606 return 0; |
604 } | 607 } |
605 | 608 |
606 bytes = 0; | 609 bytes = 0; |
610 | |
611 ngx_ssl_clear_error(c->log); | |
607 | 612 |
608 /* | 613 /* |
609 * SSL_read() may return data in parts, so try to read | 614 * SSL_read() may return data in parts, so try to read |
610 * until SSL_read() would return no data | 615 * until SSL_read() would return no data |
611 */ | 616 */ |
893 ngx_ssl_write(ngx_connection_t *c, u_char *data, size_t size) | 898 ngx_ssl_write(ngx_connection_t *c, u_char *data, size_t size) |
894 { | 899 { |
895 int n, sslerr; | 900 int n, sslerr; |
896 ngx_err_t err; | 901 ngx_err_t err; |
897 | 902 |
903 ngx_ssl_clear_error(c->log); | |
904 | |
898 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL to write: %d", size); | 905 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL to write: %d", size); |
899 | 906 |
900 n = SSL_write(c->ssl->connection, data, size); | 907 n = SSL_write(c->ssl->connection, data, size); |
901 | 908 |
902 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL_write: %d", n); | 909 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL_write: %d", n); |
995 mode |= SSL_SENT_SHUTDOWN; | 1002 mode |= SSL_SENT_SHUTDOWN; |
996 } | 1003 } |
997 } | 1004 } |
998 | 1005 |
999 SSL_set_shutdown(c->ssl->connection, mode); | 1006 SSL_set_shutdown(c->ssl->connection, mode); |
1007 | |
1008 ngx_ssl_clear_error(c->log); | |
1000 | 1009 |
1001 n = SSL_shutdown(c->ssl->connection); | 1010 n = SSL_shutdown(c->ssl->connection); |
1002 | 1011 |
1003 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL_shutdown: %d", n); | 1012 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL_shutdown: %d", n); |
1004 | 1013 |
1111 } | 1120 } |
1112 } | 1121 } |
1113 } | 1122 } |
1114 | 1123 |
1115 ngx_ssl_error(level, c->log, err, text); | 1124 ngx_ssl_error(level, c->log, err, text); |
1125 } | |
1126 | |
1127 | |
1128 static void | |
1129 ngx_ssl_clear_error(ngx_log_t *log) | |
1130 { | |
1131 if (ERR_peek_error()) { | |
1132 ngx_ssl_error(NGX_LOG_ALERT, log, 0, "ignoring stale global SSL error"); | |
1133 } | |
1116 } | 1134 } |
1117 | 1135 |
1118 | 1136 |
1119 void ngx_cdecl | 1137 void ngx_cdecl |
1120 ngx_ssl_error(ngx_uint_t level, ngx_log_t *log, ngx_err_t err, char *fmt, ...) | 1138 ngx_ssl_error(ngx_uint_t level, ngx_log_t *log, ngx_err_t err, char *fmt, ...) |