static void io_destroy(glb_ctx *cc, io_handler *io)
{
io_handler *io_cc = (io_handler*) io;
- int err = 0;
if (io_cc->s_ctx) {
if (io_cc->s_ctx->ssl_io) {
SSL_free(io_cc->s_ctx->ssl_io);
io_cc->s_ctx->ssl_io = NULL;
}
- if (io_cc->s_ctx->bio_conn) {
- err = BIO_free(io_cc->s_ctx->bio_conn);
- io_cc->s_ctx->bio_conn = NULL;
- }
}
free (io_cc->s_ctx);
io_cc->s_ctx = NULL;
flags = fcntl(io->sock, F_GETFL, 0);
(void)fcntl(io->sock, F_SETFL, flags | O_NONBLOCK);
- io->s_ctx->bio_conn = BIO_new_socket(io->sock, BIO_NOCLOSE);
- (void)BIO_set_nbio(io->s_ctx->bio_conn,1);
-
io->s_ctx->ssl_io = SSL_new(cc->ssl_ctx);
//setup_SSL_proxy_handler(cc->ssl_ctx, cacertdir);
- SSL_set_bio(io->s_ctx->ssl_io, io->s_ctx->bio_conn, io->s_ctx->bio_conn);
-
- io->s_ctx->bio_conn = NULL;
+ SSL_set_fd(io->s_ctx->ssl_io, io->sock);
err = do_ssl_connect(cc, io, timeout);
if (err) {
flags = fcntl(io->sock, F_GETFL, 0);
(void)fcntl(io->sock, F_SETFL, flags | O_NONBLOCK);
- io->s_ctx->bio_conn = BIO_new_socket(io->sock, BIO_NOCLOSE);
- (void)BIO_set_nbio(io->s_ctx->bio_conn,1);
-
io->s_ctx->ssl_io = SSL_new(cc->ssl_ctx);
//setup_SSL_proxy_handler(cc->ssl_ctx, cacertdir);
- SSL_set_bio(io->s_ctx->ssl_io, io->s_ctx->bio_conn,
- io->s_ctx->bio_conn);
+ SSL_set_fd(io->s_ctx->ssl_io, io->sock);
err = do_ssl_accept(cc, io, timeout);
if (err) {