@@ -55,7 +55,6 @@ static ID id_i_cert_store, id_i_ca_file, id_i_ca_path, id_i_verify_mode,
5555 id_i_verify_hostname , id_i_keylog_cb ;
5656static ID id_i_io , id_i_context , id_i_hostname ;
5757
58- static int ossl_ssl_ex_vcb_idx ;
5958static int ossl_ssl_ex_ptr_idx ;
6059static int ossl_sslctx_ex_ptr_idx ;
6160
@@ -327,9 +326,9 @@ ossl_ssl_verify_callback(int preverify_ok, X509_STORE_CTX *ctx)
327326 int status ;
328327
329328 ssl = X509_STORE_CTX_get_ex_data (ctx , SSL_get_ex_data_X509_STORE_CTX_idx ());
330- cb = (VALUE )SSL_get_ex_data (ssl , ossl_ssl_ex_vcb_idx );
331329 ssl_obj = (VALUE )SSL_get_ex_data (ssl , ossl_ssl_ex_ptr_idx );
332330 sslctx_obj = rb_attr_get (ssl_obj , id_i_context );
331+ cb = rb_attr_get (sslctx_obj , id_i_verify_callback );
333332 verify_hostname = rb_attr_get (sslctx_obj , id_i_verify_hostname );
334333
335334 if (preverify_ok && RTEST (verify_hostname ) && !SSL_is_server (ssl ) &&
@@ -1553,11 +1552,6 @@ ossl_ssl_mark(void *ptr)
15531552{
15541553 SSL * ssl = ptr ;
15551554 rb_gc_mark ((VALUE )SSL_get_ex_data (ssl , ossl_ssl_ex_ptr_idx ));
1556-
1557- // Note: this reference is stored as @verify_callback so we don't need to mark it.
1558- // However we do need to ensure GC compaction won't move it, hence why
1559- // we call rb_gc_mark here.
1560- rb_gc_mark ((VALUE )SSL_get_ex_data (ssl , ossl_ssl_ex_vcb_idx ));
15611555}
15621556
15631557static void
@@ -1622,7 +1616,7 @@ peeraddr_ip_str(VALUE self)
16221616static VALUE
16231617ossl_ssl_initialize (int argc , VALUE * argv , VALUE self )
16241618{
1625- VALUE io , v_ctx , verify_cb ;
1619+ VALUE io , v_ctx ;
16261620 SSL * ssl ;
16271621 SSL_CTX * ctx ;
16281622
@@ -1649,10 +1643,6 @@ ossl_ssl_initialize(int argc, VALUE *argv, VALUE self)
16491643
16501644 SSL_set_ex_data (ssl , ossl_ssl_ex_ptr_idx , (void * )self );
16511645 SSL_set_info_callback (ssl , ssl_info_cb );
1652- verify_cb = rb_attr_get (v_ctx , id_i_verify_callback );
1653- // We don't need to trigger a write barrier because it's already
1654- // an instance variable of this object.
1655- SSL_set_ex_data (ssl , ossl_ssl_ex_vcb_idx , (void * )verify_cb );
16561646
16571647 rb_call_super (0 , NULL );
16581648
@@ -2603,9 +2593,6 @@ Init_ossl_ssl(void)
26032593 id_call = rb_intern_const ("call" );
26042594 ID_callback_state = rb_intern_const ("callback_state" );
26052595
2606- ossl_ssl_ex_vcb_idx = SSL_get_ex_new_index (0 , (void * )"ossl_ssl_ex_vcb_idx" , 0 , 0 , 0 );
2607- if (ossl_ssl_ex_vcb_idx < 0 )
2608- ossl_raise (rb_eRuntimeError , "SSL_get_ex_new_index" );
26092596 ossl_ssl_ex_ptr_idx = SSL_get_ex_new_index (0 , (void * )"ossl_ssl_ex_ptr_idx" , 0 , 0 , 0 );
26102597 if (ossl_ssl_ex_ptr_idx < 0 )
26112598 ossl_raise (rb_eRuntimeError , "SSL_get_ex_new_index" );
0 commit comments