src/ssl.c

changeset 38
4ecd7b0e67ea
parent 37
8904bda2369f
child 40
85d59ac3328b
equal deleted inserted replaced
37:8904bda2369f 38:4ecd7b0e67ea
17 #include "buffer.h" 17 #include "buffer.h"
18 #include "timeout.h" 18 #include "timeout.h"
19 #include "socket.h" 19 #include "socket.h"
20 #include "ssl.h" 20 #include "ssl.h"
21 #include "x509.h" 21 #include "x509.h"
22
23 /* index into the SSL storage where the t_ssl is.
24 * see SSL_get_ex_data().
25 */
26 static int luasec_ssl_idx;
22 27
23 /** 28 /**
24 * Map error code into string. 29 * Map error code into string.
25 */ 30 */
26 static const char *ssl_ioerror(void *ctx, int err) 31 static const char *ssl_ioerror(void *ctx, int err)
215 lua_pushnil(L); 220 lua_pushnil(L);
216 lua_pushstring(L, "invalid mode"); 221 lua_pushstring(L, "invalid mode");
217 return 2; 222 return 2;
218 } 223 }
219 if (luasec_ssl_idx == -1) { 224 if (luasec_ssl_idx == -1) {
220 luasec_ssl_idx = SSL_get_ex_new_index(0, "luasec context", NULL, NULL, NULL); 225 luasec_ssl_idx = SSL_get_ex_new_index(0, "luasec ssl context", NULL, NULL, NULL);
221 if (luasec_ssl_idx == -1) { 226 if (luasec_ssl_idx == -1) {
222 lua_pushnil(L); 227 lua_pushnil(L);
223 lua_pushstring(L, "error creating luasec SSL index"); 228 lua_pushstring(L, "error creating luasec SSL index");
224 return 2; 229 return 2;
225 } 230 }
243 248
244 #ifdef SSL_MODE_RELEASE_BUFFERS 249 #ifdef SSL_MODE_RELEASE_BUFFERS
245 SSL_set_mode(ssl->ssl, SSL_MODE_RELEASE_BUFFERS); 250 SSL_set_mode(ssl->ssl, SSL_MODE_RELEASE_BUFFERS);
246 #endif 251 #endif
247 252
248 SSL_set_ex_data(ssl->ssl, luasec_ssl_idx, ctx); 253 SSL_set_ex_data(ssl->ssl, luasec_ssl_idx, ssl);
249 254
250 if (mode == MD_CTX_SERVER) 255 if (mode == MD_CTX_SERVER)
251 SSL_set_accept_state(ssl->ssl); 256 SSL_set_accept_state(ssl->ssl);
252 else 257 else
253 SSL_set_connect_state(ssl->ssl); 258 SSL_set_connect_state(ssl->ssl);

mercurial