| 321 | } |
| 322 | |
| 323 | static void on_state_invalid(h2_stream *stream) |
| 324 | { |
| 325 | if (stream->monitor && stream->monitor->on_state_invalid) { |
| 326 | stream->monitor->on_state_invalid(stream->monitor->ctx, stream); |
| 327 | } |
| 328 | /* stream got an event/frame invalid in its state */ |
| 329 | ap_log_cerror(APLOG_MARK, APLOG_TRACE1, 0, stream->session->c1, |
| 330 | H2_STRM_MSG(stream, "invalid state event")); |
| 331 | switch (stream->state) { |
| 332 | case H2_SS_OPEN: |
| 333 | case H2_SS_RSVD_L: |
| 334 | case H2_SS_RSVD_R: |
| 335 | case H2_SS_CLOSED_L: |
| 336 | case H2_SS_CLOSED_R: |
| 337 | h2_stream_rst(stream, H2_ERR_INTERNAL_ERROR); |
| 338 | break; |
| 339 | default: |
| 340 | break; |
| 341 | } |
| 342 | } |
| 343 | |
| 344 | static apr_status_t transit(h2_stream *stream, int new_state) |
| 345 | { |
no test coverage detected