Lines Matching refs:req
178 struct http_request *req = CONTAINER_OF(parser, in on_url() local
183 if (req->internal.response.http_cb && in on_url()
184 req->internal.response.http_cb->on_url) { in on_url()
185 req->internal.response.http_cb->on_url(parser, at, length); in on_url()
193 struct http_request *req = CONTAINER_OF(parser, in on_status() local
198 len = MIN(length, sizeof(req->internal.response.http_status) - 1); in on_status()
199 memcpy(req->internal.response.http_status, at, len); in on_status()
200 req->internal.response.http_status[len] = 0; in on_status()
201 req->internal.response.http_status_code = in on_status()
205 req->internal.response.http_status); in on_status()
207 if (req->internal.response.http_cb && in on_status()
208 req->internal.response.http_cb->on_status) { in on_status()
209 req->internal.response.http_cb->on_status(parser, at, length); in on_status()
218 struct http_request *req = CONTAINER_OF(parser, in on_header_field() local
228 req->internal.response.cl_present = true; in on_header_field()
231 req->internal.response.cr_present = true; in on_header_field()
236 if (req->internal.response.http_cb && in on_header_field()
237 req->internal.response.http_cb->on_header_field) { in on_header_field()
238 req->internal.response.http_cb->on_header_field(parser, at, in on_header_field()
250 struct http_request *req = CONTAINER_OF(parser, in on_header_value() local
255 if (req->internal.response.cl_present) { in on_header_value()
267 req->internal.response.content_length = num; in on_header_value()
270 req->internal.response.cl_present = false; in on_header_value()
273 if (req->internal.response.cr_present) { in on_header_value()
274 req->internal.response.content_range.start = parser->content_range.start; in on_header_value()
275 req->internal.response.content_range.end = parser->content_range.end; in on_header_value()
276 req->internal.response.content_range.total = parser->content_range.total; in on_header_value()
277 req->internal.response.cr_present = false; in on_header_value()
280 if (req->internal.response.http_cb && in on_header_value()
281 req->internal.response.http_cb->on_header_value) { in on_header_value()
282 req->internal.response.http_cb->on_header_value(parser, at, in on_header_value()
293 struct http_request *req = CONTAINER_OF(parser, in on_body() local
297 req->internal.response.body_found = 1; in on_body()
298 req->internal.response.processed += length; in on_body()
300 NET_DBG("Processed %zd length %zd", req->internal.response.processed, in on_body()
303 if (req->internal.response.http_cb && in on_body()
304 req->internal.response.http_cb->on_body) { in on_body()
305 req->internal.response.http_cb->on_body(parser, at, length); in on_body()
309 if (!req->internal.response.body_frag_start) { in on_body()
310 req->internal.response.body_frag_start = (uint8_t *)at; in on_body()
314 req->internal.response.body_frag_len = req->internal.response.data_len - in on_body()
315 (req->internal.response.body_frag_start - req->internal.response.recv_buf); in on_body()
322 struct http_request *req = CONTAINER_OF(parser, in on_headers_complete() local
326 if (req->internal.response.http_cb && in on_headers_complete()
327 req->internal.response.http_cb->on_headers_complete) { in on_headers_complete()
328 req->internal.response.http_cb->on_headers_complete(parser); in on_headers_complete()
341 if ((req->method == HTTP_HEAD || req->method == HTTP_OPTIONS) && in on_headers_complete()
342 req->internal.response.content_length > 0) { in on_headers_complete()
354 struct http_request *req = CONTAINER_OF(parser, in on_message_begin() local
358 if (req->internal.response.http_cb && in on_message_begin()
359 req->internal.response.http_cb->on_message_begin) { in on_message_begin()
360 req->internal.response.http_cb->on_message_begin(parser); in on_message_begin()
364 http_method_str(req->method)); in on_message_begin()
371 struct http_request *req = CONTAINER_OF(parser, in on_message_complete() local
375 if (req->internal.response.http_cb && in on_message_complete()
376 req->internal.response.http_cb->on_message_complete) { in on_message_complete()
377 req->internal.response.http_cb->on_message_complete(parser); in on_message_complete()
381 http_method_str(req->method)); in on_message_complete()
383 req->internal.response.message_complete = 1; in on_message_complete()
390 struct http_request *req = CONTAINER_OF(parser, in on_chunk_header() local
394 if (req->internal.response.http_cb && in on_chunk_header()
395 req->internal.response.http_cb->on_chunk_header) { in on_chunk_header()
396 req->internal.response.http_cb->on_chunk_header(parser); in on_chunk_header()
404 struct http_request *req = CONTAINER_OF(parser, in on_chunk_complete() local
408 if (req->internal.response.http_cb && in on_chunk_complete()
409 req->internal.response.http_cb->on_chunk_complete) { in on_chunk_complete()
410 req->internal.response.http_cb->on_chunk_complete(parser); in on_chunk_complete()
437 static void http_report_null(struct http_request *req) in http_report_null() argument
439 if (req->internal.response.cb) { in http_report_null()
444 req->internal.response.http_status_code = 0; in http_report_null()
447 req->internal.response.processed = 0; in http_report_null()
448 req->internal.response.data_len = 0; in http_report_null()
449 req->internal.response.content_length = 0; in http_report_null()
450 req->internal.response.body_frag_start = NULL; in http_report_null()
451 memset(req->internal.response.http_status, 0, HTTP_STATUS_STR_SIZE); in http_report_null()
453 req->internal.response.cb(&req->internal.response, HTTP_DATA_FINAL, in http_report_null()
454 req->internal.user_data); in http_report_null()
459 static void http_report_complete(struct http_request *req) in http_report_complete() argument
461 if (req->internal.response.cb) { in http_report_complete()
462 NET_DBG("Calling callback for %zd len data", req->internal.response.data_len); in http_report_complete()
463 (void)req->internal.response.cb(&req->internal.response, in http_report_complete()
465 req->internal.user_data); in http_report_complete()
470 static int http_report_progress(struct http_request *req) in http_report_progress() argument
472 if (req->internal.response.cb) { in http_report_progress()
474 req->internal.response.data_len); in http_report_progress()
476 return req->internal.response.cb(&req->internal.response, in http_report_progress()
478 req->internal.user_data); in http_report_progress()
484 static int http_wait_data(int sock, struct http_request *req, const k_timepoint_t req_end_timepoint) in http_wait_data() argument
521 received = zsock_recv(sock, req->internal.response.recv_buf + offset, in http_wait_data()
522 req->internal.response.recv_buf_len - offset, 0); in http_wait_data()
535 req->internal.response.data_len = offset; in http_wait_data()
541 &req->internal.parser, &req->internal.parser_settings, in http_wait_data()
542 req->internal.response.recv_buf, received > 0 ? offset : 0); in http_wait_data()
550 if (req->internal.parser.http_errno != HPE_OK) { in http_wait_data()
552 req->internal.parser.http_errno); in http_wait_data()
560 req->internal.response.data_len = processed; in http_wait_data()
563 if (offset >= req->internal.response.recv_buf_len) { in http_wait_data()
572 if (req->internal.response.message_complete) { in http_wait_data()
573 http_report_complete(req); in http_wait_data()
575 ret = http_report_progress(req); in http_wait_data()
583 req->internal.response.data_len = 0; in http_wait_data()
584 req->internal.response.body_frag_start = NULL; in http_wait_data()
585 req->internal.response.body_frag_len = 0; in http_wait_data()
592 memmove(req->internal.response.recv_buf, in http_wait_data()
593 req->internal.response.recv_buf + processed, in http_wait_data()
601 } while (!req->internal.response.message_complete); in http_wait_data()
606 req->data_len = offset; in http_wait_data()
617 http_report_null(req); in http_wait_data()
631 int http_client_req(int sock, struct http_request *req, in http_client_req() argument
644 if (sock < 0 || req == NULL || req->response == NULL || in http_client_req()
645 req->recv_buf == NULL || req->recv_buf_len == 0) { in http_client_req()
649 memset(&req->internal.response, 0, sizeof(req->internal.response)); in http_client_req()
651 req->internal.response.http_cb = req->http_cb; in http_client_req()
652 req->internal.response.cb = req->response; in http_client_req()
653 req->internal.response.recv_buf = req->recv_buf; in http_client_req()
654 req->internal.response.recv_buf_len = req->recv_buf_len; in http_client_req()
655 req->internal.user_data = user_data; in http_client_req()
656 req->internal.sock = sock; in http_client_req()
658 method = http_method_str(req->method); in http_client_req()
662 " ", req->url, " ", req->protocol, in http_client_req()
670 if (req->port) { in http_client_req()
672 &send_buf_pos, req_end_timepoint, "Host", ": ", req->host, in http_client_req()
673 ":", req->port, HTTP_CRLF, NULL); in http_client_req()
682 &send_buf_pos, req_end_timepoint, "Host", ": ", req->host, in http_client_req()
692 if (req->optional_headers_cb) { in http_client_req()
701 ret = req->optional_headers_cb(sock, req, user_data); in http_client_req()
708 for (i = 0; req->optional_headers && req->optional_headers[i]; in http_client_req()
712 req->optional_headers[i], NULL); in http_client_req()
721 for (i = 0; req->header_fields && req->header_fields[i]; i++) { in http_client_req()
723 &send_buf_pos, req_end_timepoint, req->header_fields[i], in http_client_req()
732 if (req->content_type_value) { in http_client_req()
735 req->content_type_value, HTTP_CRLF, NULL); in http_client_req()
743 if (req->payload || req->payload_cb) { in http_client_req()
744 if (req->payload_len) { in http_client_req()
748 "%zd", req->payload_len); in http_client_req()
778 if (req->payload_cb) { in http_client_req()
779 ret = req->payload_cb(sock, req, user_data); in http_client_req()
788 if (req->payload_len == 0) { in http_client_req()
789 length = strlen(req->payload); in http_client_req()
791 length = req->payload_len; in http_client_req()
794 ret = sendall(sock, req->payload, length, req_end_timepoint); in http_client_req()
822 http_client_init_parser(&req->internal.parser, in http_client_req()
823 &req->internal.parser_settings); in http_client_req()
826 total_recv = http_wait_data(sock, req, req_end_timepoint); in http_client_req()