diff --git a/src/context.c b/src/context.c index e6fdeaf..b6b7a75 100644 --- a/src/context.c +++ b/src/context.c @@ -846,6 +846,7 @@ static int meth_set_verify_ext(lua_State *L) * Context metamethods. */ static luaL_Reg meta[] = { + {"__close", meth_destroy}, {"__gc", meth_destroy}, {"__tostring", meth_tostring}, {NULL, NULL} diff --git a/src/ssl.c b/src/ssl.c index 551a87e..417710f 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -890,6 +890,7 @@ static luaL_Reg methods[] = { * SSL metamethods. */ static luaL_Reg meta[] = { + {"__close", meth_destroy}, {"__gc", meth_destroy}, {"__tostring", meth_tostring}, {NULL, NULL} diff --git a/src/x509.c b/src/x509.c index 6e04511..65ee53f 100644 --- a/src/x509.c +++ b/src/x509.c @@ -618,7 +618,11 @@ cleanup: */ static int meth_destroy(lua_State* L) { - X509_free(lsec_checkx509(L, 1)); + p_x509 px = lsec_checkp_x509(L, 1); + if (px->cert) { + X509_free(px->cert); + px->cert = NULL; + } return 0; } @@ -692,6 +696,7 @@ static luaL_Reg methods[] = { * X509 metamethods. */ static luaL_Reg meta[] = { + {"__close", meth_destroy}, {"__gc", meth_destroy}, {"__tostring", meth_tostring}, {NULL, NULL}