summaryrefslogtreecommitdiff
path: root/src/lib/libssl/bio_ssl.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/bio_ssl.c')
-rw-r--r--src/lib/libssl/bio_ssl.c33
1 files changed, 32 insertions, 1 deletions
diff --git a/src/lib/libssl/bio_ssl.c b/src/lib/libssl/bio_ssl.c
index f62cde4e5d..d73c41adcd 100644
--- a/src/lib/libssl/bio_ssl.c
+++ b/src/lib/libssl/bio_ssl.c
@@ -71,6 +71,7 @@ static int ssl_puts(BIO *h,char *str);
71static long ssl_ctrl(BIO *h,int cmd,long arg1,char *arg2); 71static long ssl_ctrl(BIO *h,int cmd,long arg1,char *arg2);
72static int ssl_new(BIO *h); 72static int ssl_new(BIO *h);
73static int ssl_free(BIO *data); 73static int ssl_free(BIO *data);
74static long ssl_callback_ctrl(BIO *h,int cmd,void (*fp)());
74typedef struct bio_ssl_st 75typedef struct bio_ssl_st
75 { 76 {
76 SSL *ssl; /* The ssl handle :-) */ 77 SSL *ssl; /* The ssl handle :-) */
@@ -92,6 +93,7 @@ static BIO_METHOD methods_sslp=
92 ssl_ctrl, 93 ssl_ctrl,
93 ssl_new, 94 ssl_new,
94 ssl_free, 95 ssl_free,
96 ssl_callback_ctrl,
95 }; 97 };
96 98
97BIO_METHOD *BIO_f_ssl(void) 99BIO_METHOD *BIO_f_ssl(void)
@@ -444,7 +446,14 @@ static long ssl_ctrl(BIO *b, int cmd, long num, char *ptr)
444 ret=BIO_ctrl(ssl->rbio,cmd,num,ptr); 446 ret=BIO_ctrl(ssl->rbio,cmd,num,ptr);
445 break; 447 break;
446 case BIO_CTRL_SET_CALLBACK: 448 case BIO_CTRL_SET_CALLBACK:
447 SSL_set_info_callback(ssl,(void (*)())ptr); 449 {
450#if 0 /* FIXME: Should this be used? -- Richard Levitte */
451 BIOerr(SSL_F_SSL_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
452 ret = -1;
453#else
454 ret=0;
455#endif
456 }
448 break; 457 break;
449 case BIO_CTRL_GET_CALLBACK: 458 case BIO_CTRL_GET_CALLBACK:
450 { 459 {
@@ -461,6 +470,28 @@ static long ssl_ctrl(BIO *b, int cmd, long num, char *ptr)
461 return(ret); 470 return(ret);
462 } 471 }
463 472
473static long ssl_callback_ctrl(BIO *b, int cmd, void (*fp)())
474 {
475 SSL *ssl;
476 BIO_SSL *bs;
477 long ret=1;
478
479 bs=(BIO_SSL *)b->ptr;
480 ssl=bs->ssl;
481 switch (cmd)
482 {
483 case BIO_CTRL_SET_CALLBACK:
484 {
485 SSL_set_info_callback(ssl,fp);
486 }
487 break;
488 default:
489 ret=BIO_callback_ctrl(ssl->rbio,cmd,fp);
490 break;
491 }
492 return(ret);
493 }
494
464static int ssl_puts(BIO *bp, char *str) 495static int ssl_puts(BIO *bp, char *str)
465 { 496 {
466 int n,ret; 497 int n,ret;