| 527 | } |
| 528 | |
| 529 | apr_status_t h2_stream_recv_DATA(h2_stream *stream, uint8_t flags, |
| 530 | const uint8_t *data, size_t len) |
| 531 | { |
| 532 | h2_session *session = stream->session; |
| 533 | apr_status_t status = APR_SUCCESS; |
| 534 | |
| 535 | H2_STRM_ASSERT_MAGIC(stream, H2_STRM_MAGIC_OK); |
| 536 | stream->in_data_frames++; |
| 537 | if (len > 0) { |
| 538 | if (APLOGctrace3(session->c1)) { |
| 539 | const char *load = apr_pstrndup(stream->pool, (const char *)data, len); |
| 540 | ap_log_cerror(APLOG_MARK, APLOG_TRACE3, 0, session->c1, |
| 541 | H2_STRM_MSG(stream, "recv DATA, len=%d: -->%s<--"), |
| 542 | (int)len, load); |
| 543 | } |
| 544 | else { |
| 545 | ap_log_cerror(APLOG_MARK, APLOG_TRACE2, status, session->c1, |
| 546 | H2_STRM_MSG(stream, "recv DATA, len=%d"), (int)len); |
| 547 | } |
| 548 | stream->in_data_octets += len; |
| 549 | input_append_data(stream, (const char*)data, len); |
| 550 | input_flush(stream); |
| 551 | h2_stream_dispatch(stream, H2_SEV_IN_DATA_PENDING); |
| 552 | } |
| 553 | return status; |
| 554 | } |
| 555 | |
| 556 | #ifdef AP_DEBUG |
| 557 | static apr_status_t stream_pool_destroy(void *data) |
no test coverage detected