comparison src/event/ngx_event_openssl.c @ 969:065b39794fff

ngx_ssl_get_server_conf()
author Igor Sysoev <igor@sysoev.ru>
date Tue, 02 Jan 2007 23:37:25 +0000
parents 1b60ecc8cdb7
children 8dfb3aa75de2
comparison
equal deleted inserted replaced
968:1b60ecc8cdb7 969:065b39794fff
82 SSL_OP_NO_SSLv2, 82 SSL_OP_NO_SSLv2,
83 0, 83 0,
84 }; 84 };
85 85
86 86
87 int ngx_connection_index; 87 int ngx_ssl_connection_index;
88 int ngx_ssl_server_conf_index;
88 89
89 90
90 ngx_int_t 91 ngx_int_t
91 ngx_ssl_init(ngx_log_t *log) 92 ngx_ssl_init(ngx_log_t *log)
92 { 93 {
99 100
100 #if (NGX_SSL_ENGINE) 101 #if (NGX_SSL_ENGINE)
101 ENGINE_load_builtin_engines(); 102 ENGINE_load_builtin_engines();
102 #endif 103 #endif
103 104
104 ngx_connection_index = SSL_get_ex_new_index(0, NULL, NULL, NULL, NULL); 105 ngx_ssl_connection_index = SSL_get_ex_new_index(0, NULL, NULL, NULL, NULL);
105 106
106 if (ngx_connection_index == -1) { 107 if (ngx_ssl_connection_index == -1) {
107 ngx_ssl_error(NGX_LOG_ALERT, log, 0, "SSL_get_ex_new_index() failed"); 108 ngx_ssl_error(NGX_LOG_ALERT, log, 0, "SSL_get_ex_new_index() failed");
108 return NGX_ERROR; 109 return NGX_ERROR;
109 } 110 }
110 111
112 ngx_ssl_server_conf_index = SSL_CTX_get_ex_new_index(0, NULL, NULL, NULL,
113 NULL);
114 if (ngx_ssl_server_conf_index == -1) {
115 ngx_ssl_error(NGX_LOG_ALERT, log, 0,
116 "SSL_CTX_get_ex_new_index() failed");
117 return NGX_ERROR;
118 }
119
111 return NGX_OK; 120 return NGX_OK;
112 } 121 }
113 122
114 123
115 ngx_int_t 124 ngx_int_t
116 ngx_ssl_create(ngx_ssl_t *ssl, ngx_uint_t protocols) 125 ngx_ssl_create(ngx_ssl_t *ssl, ngx_uint_t protocols, void *data)
117 { 126 {
118 ssl->ctx = SSL_CTX_new(SSLv23_method()); 127 ssl->ctx = SSL_CTX_new(SSLv23_method());
119 128
120 if (ssl->ctx == NULL) { 129 if (ssl->ctx == NULL) {
121 ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, "SSL_CTX_new() failed"); 130 ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, "SSL_CTX_new() failed");
131 return NGX_ERROR;
132 }
133
134 if (SSL_CTX_set_ex_data(ssl->ctx, ngx_ssl_server_conf_index, data) == 0) {
135 ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0,
136 "SSL_CTX_set_ex_data() failed");
122 return NGX_ERROR; 137 return NGX_ERROR;
123 } 138 }
124 139
125 /* client side options */ 140 /* client side options */
126 141
334 349
335 } else { 350 } else {
336 SSL_set_accept_state(sc->connection); 351 SSL_set_accept_state(sc->connection);
337 } 352 }
338 353
339 if (SSL_set_ex_data(sc->connection, ngx_connection_index, c) == 0) { 354 if (SSL_set_ex_data(sc->connection, ngx_ssl_connection_index, c) == 0) {
340 ngx_ssl_error(NGX_LOG_ALERT, c->log, 0, "SSL_set_ex_data() failed"); 355 ngx_ssl_error(NGX_LOG_ALERT, c->log, 0, "SSL_set_ex_data() failed");
341 return NGX_ERROR; 356 return NGX_ERROR;
342 } 357 }
343 358
344 c->ssl = sc; 359 c->ssl = sc;