Lines Matching refs:bio

83     BIO *bio = OPENSSL_zalloc(sizeof(*bio));
85 if (bio == NULL) {
90 bio->libctx = libctx;
91 bio->method = method;
92 bio->shutdown = 1;
93 bio->references = 1;
95 if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_BIO, bio, &bio->ex_data))
98 bio->lock = CRYPTO_THREAD_lock_new();
99 if (bio->lock == NULL) {
101 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_BIO, bio, &bio->ex_data);
105 if (method->create != NULL && !method->create(bio)) {
107 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_BIO, bio, &bio->ex_data);
108 CRYPTO_THREAD_lock_free(bio->lock);
112 bio->init = 1;
114 return bio;
117 OPENSSL_free(bio);
502 int BIO_get_line(BIO *bio, char *buf, int size)
517 if (bio == NULL) {
521 if (!bio->init) {
526 while (size-- > 1 && (ret = BIO_read(bio, ptr, 1)) > 0)
530 return ret > 0 || BIO_eof(bio) ? ptr - buf : ret;
622 size_t BIO_ctrl_pending(BIO *bio)
624 long ret = BIO_ctrl(bio, BIO_CTRL_PENDING, 0, NULL);
635 size_t BIO_ctrl_wpending(BIO *bio)
637 long ret = BIO_ctrl(bio, BIO_CTRL_WPENDING, 0, NULL);
648 /* put the 'bio' on the end of b's list of operators */
649 BIO *BIO_push(BIO *b, BIO *bio)
654 return bio;
658 lb->next_bio = bio;
659 if (bio != NULL)
660 bio->prev_bio = lb;
687 BIO *BIO_get_retry_BIO(BIO *bio, int *reason)
691 b = last = bio;
705 int BIO_get_retry_reason(BIO *bio)
707 return bio->retry_reason;
710 void BIO_set_retry_reason(BIO *bio, int reason)
712 bio->retry_reason = reason;
715 BIO *BIO_find_type(BIO *bio, int type)
719 if (bio == NULL) {
725 if (bio->method != NULL) {
726 mt = bio->method->type;
730 return bio;
732 return bio;
735 bio = bio->next_bio;
736 } while (bio != NULL);
752 void BIO_free_all(BIO *bio)
757 while (bio != NULL) {
758 b = bio;
760 bio = bio->next_bio;
770 BIO *ret = NULL, *eoc = NULL, *bio, *new_bio;
772 for (bio = in; bio != NULL; bio = bio->next_bio) {
773 if ((new_bio = BIO_new(bio->method)) == NULL)
776 new_bio->callback = bio->callback;
778 new_bio->callback_ex = bio->callback_ex;
779 new_bio->cb_arg = bio->cb_arg;
780 new_bio->init = bio->init;
781 new_bio->shutdown = bio->shutdown;
782 new_bio->flags = bio->flags;
785 new_bio->num = bio->num;
787 if (BIO_dup_state(bio, (char *)new_bio) <= 0) {
794 &bio->ex_data)) {
820 int BIO_set_ex_data(BIO *bio, int idx, void *data)
822 return CRYPTO_set_ex_data(&(bio->ex_data), idx, data);
825 void *BIO_get_ex_data(const BIO *bio, int idx)
827 return CRYPTO_get_ex_data(&(bio->ex_data), idx);
830 uint64_t BIO_number_read(BIO *bio)
832 if (bio)
833 return bio->num_read;
837 uint64_t BIO_number_written(BIO *bio)
839 if (bio)
840 return bio->num_write;
844 void bio_free_ex_data(BIO *bio)
846 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_BIO, bio, &bio->ex_data);
861 static int bio_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds)
872 if (BIO_get_fd(bio, &fd) > 0 && fd < FD_SETSIZE)
873 return BIO_socket_wait(fd, BIO_should_read(bio), max_time);
901 int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds)
903 int rv = bio_wait(bio, max_time, nap_milliseconds);
919 int BIO_do_connect_retry(BIO *bio, int timeout, int nap_milliseconds)
925 if (bio == NULL) {
932 BIO_set_nbio(bio, !blocking);
936 rv = BIO_do_connect(bio);
941 int do_retry = BIO_should_retry(bio); /* may be 1 only if !blocking */
955 (void)BIO_reset(bio); /* often needed to avoid retry failure */
965 rv = bio_wait(bio, max_time, nap_milliseconds);