diff options
author | Ralf S. Engelschall <rse@openssl.org> | 1998-12-21 11:00:56 +0000 |
---|---|---|
committer | Ralf S. Engelschall <rse@openssl.org> | 1998-12-21 11:00:56 +0000 |
commit | dfeab0689f69c0b4bd3480ffd37a9cacc2f17d9c (patch) | |
tree | 2f74e0cfd76a9e092548a9bf52e579aef984299b /perl/openssl_bio.xs | |
parent | 58964a492275ca9a59a0cd9c8155cb2491b4b909 (diff) |
Import of old SSLeay release: SSLeay 0.9.1b (unreleased)SSLeay
Diffstat (limited to 'perl/openssl_bio.xs')
-rw-r--r-- | perl/openssl_bio.xs | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/perl/openssl_bio.xs b/perl/openssl_bio.xs index 3782d42062..a9d32d8408 100644 --- a/perl/openssl_bio.xs +++ b/perl/openssl_bio.xs @@ -25,7 +25,7 @@ int ret; SAVETMPS; PUSHMARK(sp); - XPUSHs(me); + XPUSHs(sv_2mortal(newSViv(me))); XPUSHs(sv_2mortal(newSViv(state))); XPUSHs(sv_2mortal(newSViv(cmd))); if ((state == BIO_CB_READ) || (state == BIO_CB_WRITE)) @@ -60,7 +60,8 @@ int ret; int boot_bio() { p5_bio_ex_bio_ptr= - BIO_get_ex_new_index(0,"SSLeay::BIO",ex_new,NULL,ex_cleanup); + BIO_get_ex_new_index(0,"SSLeay::BIO",ex_new,NULL, + ex_cleanup); p5_bio_ex_bio_callback= BIO_get_ex_new_index(0,"bio_callback",NULL,NULL, ex_cleanup); @@ -97,9 +98,8 @@ p5_BIO_new_buffer_ssl_connect(...) } EXTEND(sp,1); bio=BIO_new_buffer_ssl_connect(ctx); - arg=new_ref("SSLeay::BIO",(char *)bio,0); + arg=(SV *)BIO_get_ex_data(bio,p5_bio_ex_bio_ptr); PUSHs(arg); - BIO_set_ex_data(bio,p5_bio_ex_bio_ptr,(char *)arg); void p5_BIO_new_ssl_connect(...) @@ -124,9 +124,8 @@ p5_BIO_new_ssl_connect(...) } EXTEND(sp,1); bio=BIO_new_ssl_connect(ctx); - arg=new_ref("SSLeay::BIO",(char *)bio,0); + arg=(SV *)BIO_get_ex_data(bio,p5_bio_ex_bio_ptr); PUSHs(arg); - BIO_set_ex_data(bio,p5_bio_ex_bio_ptr,(char *)arg); void p5_BIO_new(...) @@ -154,16 +153,15 @@ p5_BIO_new(...) bio=BIO_new(BIO_f_buffer()); else croak("unknown BIO type"); - arg=new_ref("SSLeay::BIO",(char *)bio,0); + arg=(SV *)BIO_get_ex_data(bio,p5_bio_ex_bio_ptr); PUSHs(arg); - BIO_set_ex_data(bio,p5_bio_ex_bio_ptr,(char *)arg); int p5_BIO_hostname(bio,name) BIO *bio; char *name; CODE: - RETVAL=BIO_set_hostname(bio,name); + RETVAL=BIO_set_conn_hostname(bio,name); OUTPUT: RETVAL @@ -218,18 +216,20 @@ p5_BIO_pop(b) if (arg == NULL) { arg=new_ref("SSLeay::BIO",(char *)bio,0); - PUSHs(arg); BIO_set_ex_data(bio,p5_bio_ex_bio_ptr,(char *)arg); + PUSHs(arg); } else { /* it was pushed in */ SvREFCNT_inc(arg); PUSHs(arg); +#if 0 /* This does not need to be done. */ if (bio->references < 1) abort(); /* decrement the reference count */ BIO_free(bio); +#endif } } @@ -253,7 +253,7 @@ p5_BIO_sysread(bio,in,num, ...) if (offset < 0) { if (-offset > olen) - croad("Offset outside string"); + croak("Offset outside string"); offset+=olen; } } @@ -356,8 +356,9 @@ p5_BIO_next_bio(b) if (arg == NULL) { arg=new_ref("SSLeay::BIO",(char *)bio,0); - PUSHs(arg); BIO_set_ex_data(bio,p5_bio_ex_bio_ptr,(char *)arg); + bio->references++; + PUSHs(arg); } else { @@ -398,6 +399,7 @@ p5_BIO_set_callback(bio,cb,...) arg=sv_mortalcopy(ST(1)); SvREFCNT_inc(arg); BIO_set_ex_data(bio,p5_bio_ex_bio_callback,(char *)arg); + printf("%08lx < bio_ptr\n",BIO_get_ex_data(bio,p5_bio_ex_bio_ptr)); BIO_set_callback(bio,p5_bio_callback); void |