support Ruby 2.x for openssl
This commit is contained in:
parent
ad76c8fb6b
commit
e76b56f58e
@ -497,8 +497,11 @@ print_mem_leaks(VALUE self)
|
|||||||
int ret;
|
int ret;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
BN_CTX_free(ossl_bn_ctx);
|
#ifndef HAVE_RB_EXT_RACTOR_SAFE
|
||||||
ossl_bn_ctx = NULL;
|
// for Ruby 2.x
|
||||||
|
void ossl_bn_ctx_free(void); // ossl_bn.c
|
||||||
|
ossl_bn_ctx_free();
|
||||||
|
#endif
|
||||||
|
|
||||||
#if OPENSSL_VERSION_NUMBER >= 0x10100000
|
#if OPENSSL_VERSION_NUMBER >= 0x10100000
|
||||||
ret = CRYPTO_mem_leaks_fp(stderr);
|
ret = CRYPTO_mem_leaks_fp(stderr);
|
||||||
|
@ -9,7 +9,10 @@
|
|||||||
*/
|
*/
|
||||||
/* modified by Michal Rokos <m.rokos@sh.cvut.cz> */
|
/* modified by Michal Rokos <m.rokos@sh.cvut.cz> */
|
||||||
#include "ossl.h"
|
#include "ossl.h"
|
||||||
|
|
||||||
|
#if HAVE_RB_EXT_RACTOR_SAFE
|
||||||
#include <ruby/ractor.h>
|
#include <ruby/ractor.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#define NewBN(klass) \
|
#define NewBN(klass) \
|
||||||
TypedData_Wrap_Struct((klass), &ossl_bn_type, 0)
|
TypedData_Wrap_Struct((klass), &ossl_bn_type, 0)
|
||||||
@ -152,6 +155,7 @@ ossl_bn_value_ptr(volatile VALUE *ptr)
|
|||||||
* Private
|
* Private
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if HAVE_RB_EXT_RACTOR_SAFE
|
||||||
void
|
void
|
||||||
ossl_bn_ctx_free(void *ptr)
|
ossl_bn_ctx_free(void *ptr)
|
||||||
{
|
{
|
||||||
@ -180,6 +184,28 @@ ossl_bn_ctx_get(void)
|
|||||||
}
|
}
|
||||||
return ctx;
|
return ctx;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
// for ruby 2.x
|
||||||
|
static BN_CTX *gv_ossl_bn_ctx;
|
||||||
|
|
||||||
|
BN_CTX *
|
||||||
|
ossl_bn_ctx_get(void)
|
||||||
|
{
|
||||||
|
if (gv_ossl_bn_ctx == NULL) {
|
||||||
|
if (!(gv_ossl_bn_ctx = BN_CTX_new())) {
|
||||||
|
ossl_raise(rb_eRuntimeError, "Cannot init BN_CTX");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return gv_ossl_bn_ctx;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ossl_bn_ctx_free(void)
|
||||||
|
{
|
||||||
|
BN_CTX_free(gv_ossl_bn_ctx);
|
||||||
|
gv_ossl_bn_ctx = NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
ossl_bn_alloc(VALUE klass)
|
ossl_bn_alloc(VALUE klass)
|
||||||
@ -1116,7 +1142,11 @@ Init_ossl_bn(void)
|
|||||||
eOSSLError = rb_define_class_under(mOSSL, "OpenSSLError", rb_eStandardError);
|
eOSSLError = rb_define_class_under(mOSSL, "OpenSSLError", rb_eStandardError);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_RB_EXT_RACTOR_SAFE
|
||||||
ossl_bn_ctx_key = rb_ractor_local_storage_ptr_newkey(&ossl_bn_ctx_key_type);
|
ossl_bn_ctx_key = rb_ractor_local_storage_ptr_newkey(&ossl_bn_ctx_key_type);
|
||||||
|
#else
|
||||||
|
ossl_bn_ctx_get();
|
||||||
|
#endif
|
||||||
|
|
||||||
eBNError = rb_define_class_under(mOSSL, "BNError", eOSSLError);
|
eBNError = rb_define_class_under(mOSSL, "BNError", eOSSLError);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user