| 1759 | } |
| 1760 | |
| 1761 | static void stream_do_responses(h2_stream *stream) |
| 1762 | { |
| 1763 | h2_session *session = stream->session; |
| 1764 | conn_rec *c1 = session->c1; |
| 1765 | apr_status_t rv; |
| 1766 | |
| 1767 | ap_assert(!stream->response); |
| 1768 | ap_log_cerror(APLOG_MARK, APLOG_TRACE2, 0, c1, |
| 1769 | H2_STRM_MSG(stream, "do_response")); |
| 1770 | rv = buffer_output_receive(stream); |
| 1771 | ap_log_cerror(APLOG_MARK, APLOG_TRACE1, rv, c1, |
| 1772 | H2_SSSN_STRM_MSG(session, stream->id, |
| 1773 | "buffer_output_received2")); |
| 1774 | if (APR_SUCCESS != rv && APR_EAGAIN != rv) { |
| 1775 | h2_stream_rst(stream, NGHTTP2_PROTOCOL_ERROR); |
| 1776 | } |
| 1777 | else { |
| 1778 | /* process all headers sitting at the buffer head. */ |
| 1779 | do { |
| 1780 | rv = stream_do_response(stream); |
| 1781 | } while (APR_SUCCESS == rv |
| 1782 | && !stream->rst_error |
| 1783 | && !stream->response); |
| 1784 | } |
| 1785 | } |
| 1786 | |
| 1787 | void h2_stream_on_output_change(h2_stream *stream) |
| 1788 | { |
no test coverage detected