@@ -2820,7 +2820,8 @@ ossl_ssl_wrap_stream(VALUE self, SSL *stream_ssl)
28202820{
28212821 VALUE stream_obj ;
28222822
2823- stream_obj = TypedData_Wrap_Struct (cSSLSocket , & ossl_ssl_type , stream_ssl );
2823+ stream_obj = TypedData_Wrap_Struct (cSSLSocket , & ossl_ssl_type , NULL );
2824+ RTYPEDDATA_DATA (stream_obj ) = stream_ssl ;
28242825 SSL_set_ex_data (stream_ssl , ossl_ssl_ex_ptr_idx , (void * )stream_obj );
28252826
28262827 /* Set @io and @context from the parent, and @connection to prevent GC */
@@ -3091,15 +3092,14 @@ ossl_ssl_new_listener(int argc, VALUE *argv, VALUE klass)
30913092 if (!listener )
30923093 ossl_raise (eSSLError , "SSL_new_listener" );
30933094
3095+ listener_obj = TypedData_Wrap_Struct (cSSLSocket , & ossl_ssl_type , NULL );
3096+ RTYPEDDATA_DATA (listener_obj ) = listener ;
3097+ SSL_set_ex_data (listener , ossl_ssl_ex_ptr_idx , (void * )listener_obj );
3098+
30943099 Check_Type (v_io , T_FILE );
30953100 GetOpenFile (v_io , fptr );
3096- if (!SSL_set_fd (listener , TO_SOCKET (rb_io_descriptor (v_io )))) {
3097- SSL_free (listener );
3101+ if (!SSL_set_fd (listener , TO_SOCKET (rb_io_descriptor (v_io ))))
30983102 ossl_raise (eSSLError , "SSL_set_fd" );
3099- }
3100-
3101- listener_obj = TypedData_Wrap_Struct (cSSLSocket , & ossl_ssl_type , listener );
3102- SSL_set_ex_data (listener , ossl_ssl_ex_ptr_idx , (void * )listener_obj );
31033103 SSL_set_blocking_mode (listener , 0 );
31043104 SSL_set_default_stream_mode (listener , SSL_DEFAULT_STREAM_MODE_NONE );
31053105
@@ -3115,7 +3115,8 @@ ossl_ssl_wrap_connection(VALUE self, SSL *conn_ssl)
31153115{
31163116 VALUE conn_obj ;
31173117
3118- conn_obj = TypedData_Wrap_Struct (cSSLSocket , & ossl_ssl_type , conn_ssl );
3118+ conn_obj = TypedData_Wrap_Struct (cSSLSocket , & ossl_ssl_type , NULL );
3119+ RTYPEDDATA_DATA (conn_obj ) = conn_ssl ;
31193120 SSL_set_ex_data (conn_ssl , ossl_ssl_ex_ptr_idx , (void * )conn_obj );
31203121 SSL_set_blocking_mode (conn_ssl , 0 );
31213122 SSL_set_default_stream_mode (conn_ssl , SSL_DEFAULT_STREAM_MODE_NONE );
0 commit comments