Lines Matching refs:rctx

96     OSSL_HTTP_REQ_CTX *rctx;  in OSSL_HTTP_REQ_CTX_new()  local
103 if ((rctx = OPENSSL_zalloc(sizeof(*rctx))) == NULL) in OSSL_HTTP_REQ_CTX_new()
105 rctx->state = OHS_ERROR; in OSSL_HTTP_REQ_CTX_new()
106 rctx->buf_size = buf_size > 0 ? buf_size : OSSL_HTTP_DEFAULT_MAX_LINE_LEN; in OSSL_HTTP_REQ_CTX_new()
107 rctx->buf = OPENSSL_malloc(rctx->buf_size); in OSSL_HTTP_REQ_CTX_new()
108 rctx->wbio = wbio; in OSSL_HTTP_REQ_CTX_new()
109 rctx->rbio = rbio; in OSSL_HTTP_REQ_CTX_new()
110 rctx->max_hdr_lines = OSSL_HTTP_DEFAULT_MAX_RESP_HDR_LINES; in OSSL_HTTP_REQ_CTX_new()
111 if (rctx->buf == NULL) { in OSSL_HTTP_REQ_CTX_new()
112 OPENSSL_free(rctx); in OSSL_HTTP_REQ_CTX_new()
115 rctx->max_resp_len = OSSL_HTTP_DEFAULT_MAX_RESP_LEN; in OSSL_HTTP_REQ_CTX_new()
117 return rctx; in OSSL_HTTP_REQ_CTX_new()
120 void OSSL_HTTP_REQ_CTX_free(OSSL_HTTP_REQ_CTX *rctx) in OSSL_HTTP_REQ_CTX_free() argument
122 if (rctx == NULL) in OSSL_HTTP_REQ_CTX_free()
129 if (rctx->free_wbio) in OSSL_HTTP_REQ_CTX_free()
130 BIO_free_all(rctx->wbio); in OSSL_HTTP_REQ_CTX_free()
132 BIO_free(rctx->mem); in OSSL_HTTP_REQ_CTX_free()
133 BIO_free(rctx->req); in OSSL_HTTP_REQ_CTX_free()
134 OPENSSL_free(rctx->buf); in OSSL_HTTP_REQ_CTX_free()
135 OPENSSL_free(rctx->proxy); in OSSL_HTTP_REQ_CTX_free()
136 OPENSSL_free(rctx->server); in OSSL_HTTP_REQ_CTX_free()
137 OPENSSL_free(rctx->port); in OSSL_HTTP_REQ_CTX_free()
138 OPENSSL_free(rctx->expected_ct); in OSSL_HTTP_REQ_CTX_free()
139 OPENSSL_free(rctx); in OSSL_HTTP_REQ_CTX_free()
142 BIO *OSSL_HTTP_REQ_CTX_get0_mem_bio(const OSSL_HTTP_REQ_CTX *rctx) in OSSL_HTTP_REQ_CTX_get0_mem_bio() argument
144 if (rctx == NULL) { in OSSL_HTTP_REQ_CTX_get0_mem_bio()
148 return rctx->mem; in OSSL_HTTP_REQ_CTX_get0_mem_bio()
151 size_t OSSL_HTTP_REQ_CTX_get_resp_len(const OSSL_HTTP_REQ_CTX *rctx) in OSSL_HTTP_REQ_CTX_get_resp_len() argument
153 if (rctx == NULL) { in OSSL_HTTP_REQ_CTX_get_resp_len()
157 return rctx->resp_len; in OSSL_HTTP_REQ_CTX_get_resp_len()
160 void OSSL_HTTP_REQ_CTX_set_max_response_length(OSSL_HTTP_REQ_CTX *rctx, in OSSL_HTTP_REQ_CTX_set_max_response_length() argument
163 if (rctx == NULL) { in OSSL_HTTP_REQ_CTX_set_max_response_length()
167 rctx->max_resp_len = len != 0 ? (size_t)len : OSSL_HTTP_DEFAULT_MAX_RESP_LEN; in OSSL_HTTP_REQ_CTX_set_max_response_length()
175 int OSSL_HTTP_REQ_CTX_set_request_line(OSSL_HTTP_REQ_CTX *rctx, int method_POST, in OSSL_HTTP_REQ_CTX_set_request_line() argument
179 if (rctx == NULL) { in OSSL_HTTP_REQ_CTX_set_request_line()
183 BIO_free(rctx->mem); in OSSL_HTTP_REQ_CTX_set_request_line()
184 if ((rctx->mem = BIO_new(BIO_s_mem())) == NULL) in OSSL_HTTP_REQ_CTX_set_request_line()
187 rctx->method_POST = method_POST != 0; in OSSL_HTTP_REQ_CTX_set_request_line()
188 if (BIO_printf(rctx->mem, "%s ", rctx->method_POST ? "POST" : "GET") <= 0) in OSSL_HTTP_REQ_CTX_set_request_line()
196 if (BIO_printf(rctx->mem, OSSL_HTTP_PREFIX"%s", server) <= 0) in OSSL_HTTP_REQ_CTX_set_request_line()
198 if (port != NULL && BIO_printf(rctx->mem, ":%s", port) <= 0) in OSSL_HTTP_REQ_CTX_set_request_line()
210 } else if (path[0] != '/' && BIO_printf(rctx->mem, "/") <= 0) { in OSSL_HTTP_REQ_CTX_set_request_line()
217 if (BIO_printf(rctx->mem, "%s "HTTP_1_0"\r\n", path) <= 0) in OSSL_HTTP_REQ_CTX_set_request_line()
220 rctx->resp_len = 0; in OSSL_HTTP_REQ_CTX_set_request_line()
221 rctx->state = OHS_ADD_HEADERS; in OSSL_HTTP_REQ_CTX_set_request_line()
225 int OSSL_HTTP_REQ_CTX_add1_header(OSSL_HTTP_REQ_CTX *rctx, in OSSL_HTTP_REQ_CTX_add1_header() argument
228 if (rctx == NULL || name == NULL) { in OSSL_HTTP_REQ_CTX_add1_header()
232 if (rctx->mem == NULL) { in OSSL_HTTP_REQ_CTX_add1_header()
237 if (BIO_puts(rctx->mem, name) <= 0) in OSSL_HTTP_REQ_CTX_add1_header()
240 if (BIO_write(rctx->mem, ": ", 2) != 2) in OSSL_HTTP_REQ_CTX_add1_header()
242 if (BIO_puts(rctx->mem, value) <= 0) in OSSL_HTTP_REQ_CTX_add1_header()
245 return BIO_write(rctx->mem, "\r\n", 2) == 2; in OSSL_HTTP_REQ_CTX_add1_header()
248 int OSSL_HTTP_REQ_CTX_set_expected(OSSL_HTTP_REQ_CTX *rctx, in OSSL_HTTP_REQ_CTX_set_expected() argument
252 if (rctx == NULL) { in OSSL_HTTP_REQ_CTX_set_expected()
257 && rctx->state != OHS_ERROR && rctx->state != OHS_ADD_HEADERS) { in OSSL_HTTP_REQ_CTX_set_expected()
263 OPENSSL_free(rctx->expected_ct); in OSSL_HTTP_REQ_CTX_set_expected()
264 rctx->expected_ct = NULL; in OSSL_HTTP_REQ_CTX_set_expected()
266 && (rctx->expected_ct = OPENSSL_strdup(content_type)) == NULL) in OSSL_HTTP_REQ_CTX_set_expected()
269 rctx->expect_asn1 = asn1; in OSSL_HTTP_REQ_CTX_set_expected()
271 rctx->max_time = timeout > 0 ? time(NULL) + timeout : 0; in OSSL_HTTP_REQ_CTX_set_expected()
273 rctx->max_time = rctx->max_total_time; in OSSL_HTTP_REQ_CTX_set_expected()
274 rctx->keep_alive = keep_alive; in OSSL_HTTP_REQ_CTX_set_expected()
278 static int set1_content(OSSL_HTTP_REQ_CTX *rctx, in set1_content() argument
286 if (rctx == NULL || (req == NULL && content_type != NULL)) { in set1_content()
291 if (rctx->keep_alive != 0 in set1_content()
292 && !OSSL_HTTP_REQ_CTX_add1_header(rctx, "Connection", "keep-alive")) in set1_content()
295 BIO_free(rctx->req); in set1_content()
296 rctx->req = NULL; in set1_content()
299 if (!rctx->method_POST) { in set1_content()
305 rctx->text = 1; /* assuming text by default, used just for tracing */ in set1_content()
308 rctx->text = 1; in set1_content()
309 if (BIO_printf(rctx->mem, "Content-Type: %s\r\n", content_type) <= 0) in set1_content()
338 && BIO_printf(rctx->mem, "Content-Length: %ld\r\n", req_len) < 0) in set1_content()
343 rctx->req = req; in set1_content()
347 int OSSL_HTTP_REQ_CTX_set1_req(OSSL_HTTP_REQ_CTX *rctx, const char *content_type, in OSSL_HTTP_REQ_CTX_set1_req() argument
355 res = res && set1_content(rctx, content_type, mem); in OSSL_HTTP_REQ_CTX_set1_req()
360 void OSSL_HTTP_REQ_CTX_set_max_response_hdr_lines(OSSL_HTTP_REQ_CTX *rctx, in OSSL_HTTP_REQ_CTX_set_max_response_hdr_lines() argument
363 if (rctx == NULL) { in OSSL_HTTP_REQ_CTX_set_max_response_hdr_lines()
367 rctx->max_hdr_lines = count; in OSSL_HTTP_REQ_CTX_set_max_response_hdr_lines()
370 static int add1_headers(OSSL_HTTP_REQ_CTX *rctx, in add1_headers() argument
381 if (!OSSL_HTTP_REQ_CTX_add1_header(rctx, hdr->name, hdr->value)) in add1_headers()
385 if (add_host && !OSSL_HTTP_REQ_CTX_add1_header(rctx, "Host", host)) in add1_headers()
398 OSSL_HTTP_REQ_CTX *rctx = OSSL_HTTP_REQ_CTX_new(wbio, rbio, buf_size); in http_req_ctx_new() local
400 if (rctx == NULL) in http_req_ctx_new()
402 rctx->free_wbio = free_wbio; in http_req_ctx_new()
403 rctx->upd_fn = bio_update_fn; in http_req_ctx_new()
404 rctx->upd_arg = arg; in http_req_ctx_new()
405 rctx->use_ssl = use_ssl; in http_req_ctx_new()
407 && (rctx->proxy = OPENSSL_strdup(proxy)) == NULL) in http_req_ctx_new()
410 && (rctx->server = OPENSSL_strdup(server)) == NULL) in http_req_ctx_new()
413 && (rctx->port = OPENSSL_strdup(port)) == NULL) in http_req_ctx_new()
415 rctx->max_total_time = in http_req_ctx_new()
417 return rctx; in http_req_ctx_new()
420 OSSL_HTTP_REQ_CTX_free(rctx); in http_req_ctx_new()
508 static int check_set_resp_len(OSSL_HTTP_REQ_CTX *rctx, size_t len) in check_set_resp_len() argument
510 if (rctx->max_resp_len != 0 && len > rctx->max_resp_len) { in check_set_resp_len()
512 "length=%zu, max=%zu", len, rctx->max_resp_len); in check_set_resp_len()
515 if (rctx->resp_len != 0 && rctx->resp_len != len) { in check_set_resp_len()
518 len, rctx->resp_len); in check_set_resp_len()
521 rctx->resp_len = len; in check_set_resp_len()
544 int OSSL_HTTP_REQ_CTX_nbio(OSSL_HTTP_REQ_CTX *rctx) in OSSL_HTTP_REQ_CTX_nbio() argument
554 if (rctx == NULL) { in OSSL_HTTP_REQ_CTX_nbio()
558 if (rctx->mem == NULL || rctx->wbio == NULL || rctx->rbio == NULL) { in OSSL_HTTP_REQ_CTX_nbio()
563 rctx->redirection_url = NULL; in OSSL_HTTP_REQ_CTX_nbio()
565 buf = (char *)rctx->buf; in OSSL_HTTP_REQ_CTX_nbio()
566 if ((rctx->state & OHS_NOREAD) == 0) { in OSSL_HTTP_REQ_CTX_nbio()
567 if (rctx->expect_asn1) { in OSSL_HTTP_REQ_CTX_nbio()
568 n = BIO_read(rctx->rbio, rctx->buf, rctx->buf_size); in OSSL_HTTP_REQ_CTX_nbio()
571 n = BIO_gets(rctx->rbio, buf, rctx->buf_size); in OSSL_HTTP_REQ_CTX_nbio()
574 n = BIO_get_line(rctx->rbio, buf, rctx->buf_size); in OSSL_HTTP_REQ_CTX_nbio()
580 if (BIO_should_retry(rctx->rbio)) in OSSL_HTTP_REQ_CTX_nbio()
587 if (BIO_write(rctx->mem, rctx->buf, n) != n) in OSSL_HTTP_REQ_CTX_nbio()
591 switch (rctx->state) { in OSSL_HTTP_REQ_CTX_nbio()
594 if (BIO_write(rctx->mem, "\r\n", 2) != 2) { in OSSL_HTTP_REQ_CTX_nbio()
595 rctx->state = OHS_ERROR; in OSSL_HTTP_REQ_CTX_nbio()
598 rctx->state = OHS_WRITE_INIT; in OSSL_HTTP_REQ_CTX_nbio()
602 rctx->len_to_send = BIO_get_mem_data(rctx->mem, &rctx->pos); in OSSL_HTTP_REQ_CTX_nbio()
603 rctx->state = OHS_WRITE_HDR1; in OSSL_HTTP_REQ_CTX_nbio()
612 if (rctx->len_to_send > 0) { in OSSL_HTTP_REQ_CTX_nbio()
615 if (!BIO_write_ex(rctx->wbio, rctx->pos, rctx->len_to_send, &sz)) { in OSSL_HTTP_REQ_CTX_nbio()
616 if (BIO_should_retry(rctx->wbio)) in OSSL_HTTP_REQ_CTX_nbio()
618 rctx->state = OHS_ERROR; in OSSL_HTTP_REQ_CTX_nbio()
621 if (OSSL_TRACE_ENABLED(HTTP) && rctx->state == OHS_WRITE_HDR1) in OSSL_HTTP_REQ_CTX_nbio()
623 OSSL_TRACE_STRING(HTTP, rctx->state != OHS_WRITE_REQ || rctx->text, in OSSL_HTTP_REQ_CTX_nbio()
624 rctx->state != OHS_WRITE_REQ, rctx->pos, sz); in OSSL_HTTP_REQ_CTX_nbio()
625 if (rctx->state == OHS_WRITE_HDR1) in OSSL_HTTP_REQ_CTX_nbio()
626 rctx->state = OHS_WRITE_HDR; in OSSL_HTTP_REQ_CTX_nbio()
627 rctx->pos += sz; in OSSL_HTTP_REQ_CTX_nbio()
628 rctx->len_to_send -= sz; in OSSL_HTTP_REQ_CTX_nbio()
631 if (rctx->state == OHS_WRITE_HDR) { in OSSL_HTTP_REQ_CTX_nbio()
632 (void)BIO_reset(rctx->mem); in OSSL_HTTP_REQ_CTX_nbio()
633 rctx->state = OHS_WRITE_REQ; in OSSL_HTTP_REQ_CTX_nbio()
635 if (rctx->req != NULL && !BIO_eof(rctx->req)) { in OSSL_HTTP_REQ_CTX_nbio()
636 n = BIO_read(rctx->req, rctx->buf, rctx->buf_size); in OSSL_HTTP_REQ_CTX_nbio()
638 if (BIO_should_retry(rctx->req)) in OSSL_HTTP_REQ_CTX_nbio()
643 rctx->pos = rctx->buf; in OSSL_HTTP_REQ_CTX_nbio()
644 rctx->len_to_send = n; in OSSL_HTTP_REQ_CTX_nbio()
649 rctx->state = OHS_FLUSH; in OSSL_HTTP_REQ_CTX_nbio()
654 i = BIO_flush(rctx->wbio); in OSSL_HTTP_REQ_CTX_nbio()
657 rctx->state = OHS_FIRSTLINE; in OSSL_HTTP_REQ_CTX_nbio()
661 if (BIO_should_retry(rctx->wbio)) in OSSL_HTTP_REQ_CTX_nbio()
664 rctx->state = OHS_ERROR; in OSSL_HTTP_REQ_CTX_nbio()
681 n = BIO_get_mem_data(rctx->mem, &p); in OSSL_HTTP_REQ_CTX_nbio()
683 if (n >= rctx->buf_size) { in OSSL_HTTP_REQ_CTX_nbio()
684 rctx->state = OHS_ERROR; in OSSL_HTTP_REQ_CTX_nbio()
689 n = BIO_gets(rctx->mem, buf, rctx->buf_size); in OSSL_HTTP_REQ_CTX_nbio()
692 if (BIO_should_retry(rctx->mem)) in OSSL_HTTP_REQ_CTX_nbio()
694 rctx->state = OHS_ERROR; in OSSL_HTTP_REQ_CTX_nbio()
699 if (rctx->max_hdr_lines != 0 && rctx->max_hdr_lines < resp_hdr_lines) { in OSSL_HTTP_REQ_CTX_nbio()
702 rctx->state = OHS_ERROR; in OSSL_HTTP_REQ_CTX_nbio()
707 if (n == rctx->buf_size) { in OSSL_HTTP_REQ_CTX_nbio()
709 rctx->state = OHS_ERROR; in OSSL_HTTP_REQ_CTX_nbio()
715 if (rctx->state == OHS_FIRSTLINE) in OSSL_HTTP_REQ_CTX_nbio()
721 if (rctx->state == OHS_FIRSTLINE) { in OSSL_HTTP_REQ_CTX_nbio()
724 rctx->state = OHS_HEADERS; in OSSL_HTTP_REQ_CTX_nbio()
728 if (!rctx->method_POST) { /* method is GET */ in OSSL_HTTP_REQ_CTX_nbio()
729 rctx->state = OHS_REDIRECT; in OSSL_HTTP_REQ_CTX_nbio()
736 rctx->state = OHS_HEADERS_ERROR; in OSSL_HTTP_REQ_CTX_nbio()
753 if (rctx->state == OHS_REDIRECT in OSSL_HTTP_REQ_CTX_nbio()
755 rctx->redirection_url = value; in OSSL_HTTP_REQ_CTX_nbio()
760 if (rctx->state == OHS_HEADERS in OSSL_HTTP_REQ_CTX_nbio()
761 && rctx->expected_ct != NULL) { in OSSL_HTTP_REQ_CTX_nbio()
764 if (OPENSSL_strcasecmp(rctx->expected_ct, value) != 0 in OSSL_HTTP_REQ_CTX_nbio()
766 && (strchr(rctx->expected_ct, ';') != NULL in OSSL_HTTP_REQ_CTX_nbio()
768 || (size_t)(semicolon - value) != strlen(rctx->expected_ct) in OSSL_HTTP_REQ_CTX_nbio()
769 || OPENSSL_strncasecmp(rctx->expected_ct, value, in OSSL_HTTP_REQ_CTX_nbio()
774 rctx->expected_ct, value); in OSSL_HTTP_REQ_CTX_nbio()
795 if (!check_set_resp_len(rctx, resp_len)) in OSSL_HTTP_REQ_CTX_nbio()
801 for (p = rctx->buf; *p != '\0'; p++) { in OSSL_HTTP_REQ_CTX_nbio()
812 if (rctx->keep_alive != 0 /* do not let server initiate keep_alive */ in OSSL_HTTP_REQ_CTX_nbio()
814 if (rctx->keep_alive == 2) { in OSSL_HTTP_REQ_CTX_nbio()
815 rctx->keep_alive = 0; in OSSL_HTTP_REQ_CTX_nbio()
819 rctx->keep_alive = 0; in OSSL_HTTP_REQ_CTX_nbio()
822 if (rctx->state == OHS_HEADERS_ERROR) { in OSSL_HTTP_REQ_CTX_nbio()
827 while ((n = BIO_read(rctx->rbio, rctx->buf, rctx->buf_size)) > 0 in OSSL_HTTP_REQ_CTX_nbio()
828 || (OSSL_sleep(100), BIO_should_retry(rctx->rbio))) { in OSSL_HTTP_REQ_CTX_nbio()
829 OSSL_TRACE_STRING(HTTP, got_text, 1, rctx->buf, n); in OSSL_HTTP_REQ_CTX_nbio()
831 printed_final_nl = rctx->buf[n - 1] == '\n'; in OSSL_HTTP_REQ_CTX_nbio()
839 if (rctx->expected_ct != NULL && !found_expected_ct) { in OSSL_HTTP_REQ_CTX_nbio()
841 "expected=%s", rctx->expected_ct); in OSSL_HTTP_REQ_CTX_nbio()
844 if (rctx->state == OHS_REDIRECT) { in OSSL_HTTP_REQ_CTX_nbio()
850 if (!rctx->expect_asn1) { in OSSL_HTTP_REQ_CTX_nbio()
851 rctx->state = OHS_STREAM; in OSSL_HTTP_REQ_CTX_nbio()
855 rctx->state = OHS_ASN1_HEADER; in OSSL_HTTP_REQ_CTX_nbio()
864 n = BIO_get_mem_data(rctx->mem, &p); in OSSL_HTTP_REQ_CTX_nbio()
898 if (!check_set_resp_len(rctx, resp_len)) in OSSL_HTTP_REQ_CTX_nbio()
901 rctx->state = OHS_ASN1_CONTENT; in OSSL_HTTP_REQ_CTX_nbio()
906 n = BIO_get_mem_data(rctx->mem, NULL); in OSSL_HTTP_REQ_CTX_nbio()
907 if (n < 0 || (size_t)n < rctx->resp_len) in OSSL_HTTP_REQ_CTX_nbio()
910 rctx->state = OHS_ASN1_DONE; in OSSL_HTTP_REQ_CTX_nbio()
915 int OSSL_HTTP_REQ_CTX_nbio_d2i(OSSL_HTTP_REQ_CTX *rctx, in OSSL_HTTP_REQ_CTX_nbio_d2i() argument
922 if ((rv = OSSL_HTTP_REQ_CTX_nbio(rctx)) != 1) in OSSL_HTTP_REQ_CTX_nbio_d2i()
924 *pval = ASN1_item_d2i(NULL, &p, BIO_get_mem_data(rctx->mem, &p), it); in OSSL_HTTP_REQ_CTX_nbio_d2i()
978 BIO *OSSL_HTTP_REQ_CTX_exchange(OSSL_HTTP_REQ_CTX *rctx) in OSSL_HTTP_REQ_CTX_exchange() argument
982 if (rctx == NULL) { in OSSL_HTTP_REQ_CTX_exchange()
988 rv = OSSL_HTTP_REQ_CTX_nbio(rctx); in OSSL_HTTP_REQ_CTX_exchange()
993 if (BIO_wait(rctx->rbio, rctx->max_time, 100 /* milliseconds */) <= 0) in OSSL_HTTP_REQ_CTX_exchange()
998 if (rctx->redirection_url == NULL) { /* an error occurred */ in OSSL_HTTP_REQ_CTX_exchange()
999 if (rctx->len_to_send > 0) in OSSL_HTTP_REQ_CTX_exchange()
1006 return rctx->state == OHS_STREAM ? rctx->rbio : rctx->mem; in OSSL_HTTP_REQ_CTX_exchange()
1009 int OSSL_HTTP_is_alive(const OSSL_HTTP_REQ_CTX *rctx) in OSSL_HTTP_is_alive() argument
1011 return rctx != NULL && rctx->keep_alive != 0; in OSSL_HTTP_is_alive()
1024 OSSL_HTTP_REQ_CTX *rctx = NULL; in OSSL_HTTP_open() local
1089 rctx = http_req_ctx_new(bio == NULL, cbio, rbio != NULL ? rbio : cbio, in OSSL_HTTP_open()
1094 if (rctx != NULL) in OSSL_HTTP_open()
1100 return rctx; in OSSL_HTTP_open()
1103 int OSSL_HTTP_set1_request(OSSL_HTTP_REQ_CTX *rctx, const char *path, in OSSL_HTTP_set1_request() argument
1111 if (rctx == NULL) { in OSSL_HTTP_set1_request()
1115 use_http_proxy = rctx->proxy != NULL && !rctx->use_ssl; in OSSL_HTTP_set1_request()
1116 if (use_http_proxy && rctx->server == NULL) { in OSSL_HTTP_set1_request()
1120 rctx->max_resp_len = max_resp_len; /* allows for 0: indefinite */ in OSSL_HTTP_set1_request()
1122 return OSSL_HTTP_REQ_CTX_set_request_line(rctx, req != NULL, in OSSL_HTTP_set1_request()
1123 use_http_proxy ? rctx->server in OSSL_HTTP_set1_request()
1124 : NULL, rctx->port, path) in OSSL_HTTP_set1_request()
1125 && add1_headers(rctx, headers, rctx->server) in OSSL_HTTP_set1_request()
1126 && OSSL_HTTP_REQ_CTX_set_expected(rctx, expected_content_type, in OSSL_HTTP_set1_request()
1128 && set1_content(rctx, content_type, req); in OSSL_HTTP_set1_request()
1136 BIO *OSSL_HTTP_exchange(OSSL_HTTP_REQ_CTX *rctx, char **redirection_url) in OSSL_HTTP_exchange() argument
1140 if (rctx == NULL) { in OSSL_HTTP_exchange()
1148 resp = OSSL_HTTP_REQ_CTX_exchange(rctx); in OSSL_HTTP_exchange()
1150 if (rctx->redirection_url != NULL) { in OSSL_HTTP_exchange()
1155 *redirection_url = OPENSSL_strdup(rctx->redirection_url); in OSSL_HTTP_exchange()
1170 if (rctx->server != NULL) { in OSSL_HTTP_exchange()
1172 rctx->use_ssl ? "s" : "", rctx->server, in OSSL_HTTP_exchange()
1173 rctx->port != NULL ? ":" : "", in OSSL_HTTP_exchange()
1174 rctx->port != NULL ? rctx->port : ""); in OSSL_HTTP_exchange()
1177 if (rctx->proxy != NULL) in OSSL_HTTP_exchange()
1178 ERR_add_error_data(2, " proxy=", rctx->proxy); in OSSL_HTTP_exchange()
1181 rctx->use_ssl ? " violating the protocol" : in OSSL_HTTP_exchange()
1235 OSSL_HTTP_REQ_CTX *rctx; in OSSL_HTTP_get() local
1242 rctx = OSSL_HTTP_open(host, port, proxy, no_proxy, in OSSL_HTTP_get()
1247 if (rctx != NULL) { in OSSL_HTTP_get()
1248 if (!OSSL_HTTP_set1_request(rctx, path, headers, in OSSL_HTTP_get()
1254 OSSL_HTTP_REQ_CTX_free(rctx); in OSSL_HTTP_get()
1255 rctx = NULL; in OSSL_HTTP_get()
1257 resp = OSSL_HTTP_exchange(rctx, &redirection_url); in OSSL_HTTP_get()
1272 (void)OSSL_HTTP_close(rctx, 1); in OSSL_HTTP_get()
1281 (void)OSSL_HTTP_close(rctx, 1); in OSSL_HTTP_get()
1289 if (!OSSL_HTTP_close(rctx, resp != NULL)) { in OSSL_HTTP_get()
1311 OSSL_HTTP_REQ_CTX *rctx = prctx == NULL ? NULL : *prctx; in OSSL_HTTP_transfer() local
1314 if (rctx == NULL) { in OSSL_HTTP_transfer()
1315 rctx = OSSL_HTTP_open(server, port, proxy, no_proxy, in OSSL_HTTP_transfer()
1320 if (rctx != NULL) { in OSSL_HTTP_transfer()
1321 if (OSSL_HTTP_set1_request(rctx, path, headers, content_type, req, in OSSL_HTTP_transfer()
1324 resp = OSSL_HTTP_exchange(rctx, NULL); in OSSL_HTTP_transfer()
1325 if (resp == NULL || !OSSL_HTTP_is_alive(rctx)) { in OSSL_HTTP_transfer()
1326 if (!OSSL_HTTP_close(rctx, resp != NULL)) { in OSSL_HTTP_transfer()
1330 rctx = NULL; in OSSL_HTTP_transfer()
1334 *prctx = rctx; in OSSL_HTTP_transfer()
1338 int OSSL_HTTP_close(OSSL_HTTP_REQ_CTX *rctx, int ok) in OSSL_HTTP_close() argument
1344 if (rctx != NULL && rctx->upd_fn != NULL) { in OSSL_HTTP_close()
1345 wbio = (*rctx->upd_fn)(rctx->wbio, rctx->upd_arg, in OSSL_HTTP_close()
1349 rctx->wbio = wbio; in OSSL_HTTP_close()
1351 OSSL_HTTP_REQ_CTX_free(rctx); in OSSL_HTTP_close()