diff --git a/ssl/ssl.h b/ssl/ssl.h index 9de9e611ab..6e67506a75 100644 --- a/ssl/ssl.h +++ b/ssl/ssl.h @@ -939,6 +939,8 @@ char * SSL_CIPHER_get_version(SSL_CIPHER *c); const char * SSL_CIPHER_get_name(SSL_CIPHER *c); int SSL_get_fd(SSL *s); +int SSL_get_rfd(SSL *s); +int SSL_get_wfd(SSL *s); const char * SSL_get_cipher_list(SSL *s,int n); char * SSL_get_shared_ciphers(SSL *s, char *buf, int len); int SSL_get_read_ahead(SSL * s); diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c index 1fe85b6cb7..cd110ca1e6 100644 --- a/ssl/ssl_lib.c +++ b/ssl/ssl_lib.c @@ -410,6 +410,11 @@ BIO *SSL_get_wbio(SSL *s) { return(s->wbio); } int SSL_get_fd(SSL *s) + { + return(SSL_get_rfc(s)); + } + +int SSL_get_rfd(SSL *s) { int ret= -1; BIO *b,*r; @@ -421,6 +426,18 @@ int SSL_get_fd(SSL *s) return(ret); } +int SSL_get_wfd(SSL *s) + { + int ret= -1; + BIO *b,*r; + + b=SSL_get_wbio(s); + r=BIO_find_type(b,BIO_TYPE_DESCRIPTOR); + if (r != NULL) + BIO_get_fd(r,&ret); + return(ret); + } + #ifndef NO_SOCK int SSL_set_fd(SSL *s,int fd) {