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); |