| 155 | } |
| 156 | |
| 157 | void h2_c2_abort(conn_rec *c2, conn_rec *from) |
| 158 | { |
| 159 | h2_conn_ctx_t *conn_ctx = h2_conn_ctx_get(c2); |
| 160 | |
| 161 | AP_DEBUG_ASSERT(conn_ctx); |
| 162 | AP_DEBUG_ASSERT(conn_ctx->stream_id); |
| 163 | if(!c2->aborted && conn_ctx->bytes_sent) { |
| 164 | h2_c2_log_io(c2, conn_ctx->bytes_sent); |
| 165 | } |
| 166 | |
| 167 | if (conn_ctx->beam_in) { |
| 168 | h2_beam_abort(conn_ctx->beam_in, from); |
| 169 | } |
| 170 | if (conn_ctx->beam_out) { |
| 171 | h2_beam_abort(conn_ctx->beam_out, from); |
| 172 | } |
| 173 | c2->aborted = 1; |
| 174 | } |
| 175 | |
| 176 | typedef struct { |
| 177 | apr_bucket_brigade *bb; /* c2: data in holding area */ |
no test coverage detected