| 568 | } |
| 569 | |
| 570 | static int DoraXrtHttpProcessChunkedTrailers(DoraXrtHttpStreamContext* ctx) { |
| 571 | size_t trailerEnd; |
| 572 | if (ctx->pendingLen >= 2u && ctx->pending[0] == '\r' && ctx->pending[1] == '\n') { |
| 573 | DoraXrtHttpStreamConsume(ctx, 2u); |
| 574 | DoraXrtHttpStreamCloseWith(ctx, XRT_NET_OK); |
| 575 | return 1; |
| 576 | } |
| 577 | trailerEnd = DoraXrtHttpFindBytes(ctx->pending, ctx->pendingLen, "\r\n\r\n", 4u); |
| 578 | if (trailerEnd != (size_t)-1) { |
| 579 | if (trailerEnd + 4u > DORA_XRT_HTTP_MAX_HEADER_BYTES) { |
| 580 | DoraXrtHttpStreamCloseWith(ctx, XRT_NET_ERROR); |
| 581 | return 0; |
| 582 | } |
| 583 | DoraXrtHttpStreamConsume(ctx, trailerEnd + 4u); |
| 584 | DoraXrtHttpStreamCloseWith(ctx, XRT_NET_OK); |
| 585 | return 1; |
| 586 | } |
| 587 | if (ctx->pendingLen > DORA_XRT_HTTP_MAX_HEADER_BYTES) { |
| 588 | DoraXrtHttpStreamCloseWith(ctx, XRT_NET_ERROR); |
| 589 | return 0; |
| 590 | } |
| 591 | return 1; |
| 592 | } |
| 593 | |
| 594 | static int DoraXrtHttpProcessChunkedBody(DoraXrtHttpStreamContext* ctx) { |
| 595 | for (;;) { |
no test coverage detected