/* This should exactly match OpenSSL's SSL_set_fd except for using my BIO */ static int my_SSL_set_fd(Port *port, int fd) { int ret = 0; BIO *bio; BIO_METHOD *bio_method; bio_method = my_BIO_s_socket(); if (bio_method == NULL) { SSLerr(SSL_F_SSL_SET_FD, ERR_R_BUF_LIB); goto err; } bio = BIO_new(bio_method); if (bio == NULL) { SSLerr(SSL_F_SSL_SET_FD, ERR_R_BUF_LIB); goto err; } BIO_set_data(bio, port); BIO_set_fd(bio, fd, BIO_NOCLOSE); SSL_set_bio(port->ssl, bio, bio); ret = 1; err: return ret; }
/* This should exactly match openssl's SSL_set_fd except for using my BIO */ static int my_SSL_set_fd(SSL *s, int fd) { int ret = 0; BIO *bio = NULL; bio = BIO_new(my_BIO_s_socket()); if (bio == NULL) { SSLerr(SSL_F_SSL_SET_FD, ERR_R_BUF_LIB); goto err; } BIO_set_fd(bio, fd, BIO_NOCLOSE); SSL_set_bio(s, bio, bio); ret = 1; err: return ret; }
/* This should exactly match openssl's SSL_set_fd except for using my BIO */ static int my_SSL_set_fd(Port *port, int fd) { int ret = 0; BIO *bio = NULL; bio = BIO_new(my_BIO_s_socket()); if (bio == NULL) { SSLerr(SSL_F_SSL_SET_FD, ERR_R_BUF_LIB); goto err; } /* Use 'ptr' to store pointer to PGconn */ bio->ptr = port; BIO_set_fd(bio, fd, BIO_NOCLOSE); SSL_set_bio(port->ssl, bio, bio); ret = 1; err: return ret; }