X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=ssl%2Fbio_ssl.c;h=29ae258b35708dc0d0628ecc59235e31755315ea;hp=3d380c83fb6078df5f1a63164a42721539ce93ee;hb=9b6a82546151d6f971628e2d7828752ee47bfef7;hpb=4ee7d3f94590d3766c28eed03b969f338ddf96dc diff --git a/ssl/bio_ssl.c b/ssl/bio_ssl.c index 3d380c83fb..29ae258b35 100644 --- a/ssl/bio_ssl.c +++ b/ssl/bio_ssl.c @@ -380,15 +380,7 @@ static long ssl_ctrl(BIO *b, int cmd, long num, void *ptr) ret = BIO_ctrl(ssl->rbio, cmd, num, ptr); break; case BIO_CTRL_SET_CALLBACK: - { -#if 0 /* FIXME: Should this be used? -- Richard - * Levitte */ - SSLerr(SSL_F_SSL_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); - ret = -1; -#else - ret = 0; -#endif - } + ret = 0; /* use callback ctrl */ break; case BIO_CTRL_GET_CALLBACK: { @@ -514,12 +506,13 @@ int BIO_ssl_copy_session_id(BIO *t, BIO *f) void BIO_ssl_shutdown(BIO *b) { - SSL *s; - - b = BIO_find_type(b, BIO_TYPE_SSL); - if (b == NULL) - return; - - s = BIO_get_data(b); - SSL_shutdown(s); + BIO_SSL *bdata; + + for (; b != NULL; b = BIO_next(b)) { + if (BIO_method_type(b) != BIO_TYPE_SSL) + continue; + bdata = BIO_get_data(b); + if (bdata != NULL && bdata->ssl != NULL) + SSL_shutdown(bdata->ssl); + } }