| 712 | nghttp2_session_callbacks_set_##name##_callback(callbacks, fn) |
| 713 | |
| 714 | static apr_status_t init_callbacks(conn_rec *c, nghttp2_session_callbacks **pcb) |
| 715 | { |
| 716 | int rv = nghttp2_session_callbacks_new(pcb); |
| 717 | if (rv != 0) { |
| 718 | ap_log_cerror(APLOG_MARK, APLOG_ERR, 0, c, |
| 719 | APLOGNO(02926) "nghttp2_session_callbacks_new: %s", |
| 720 | nghttp2_strerror(rv)); |
| 721 | return APR_EGENERAL; |
| 722 | } |
| 723 | |
| 724 | NGH2_SET_CALLBACK(*pcb, send, send_cb); |
| 725 | NGH2_SET_CALLBACK(*pcb, on_frame_recv, on_frame_recv_cb); |
| 726 | NGH2_SET_CALLBACK(*pcb, on_invalid_frame_recv, on_invalid_frame_recv_cb); |
| 727 | NGH2_SET_CALLBACK(*pcb, on_data_chunk_recv, on_data_chunk_recv_cb); |
| 728 | NGH2_SET_CALLBACK(*pcb, on_stream_close, on_stream_close_cb); |
| 729 | NGH2_SET_CALLBACK(*pcb, on_begin_headers, on_begin_headers_cb); |
| 730 | NGH2_SET_CALLBACK(*pcb, on_header, on_header_cb); |
| 731 | NGH2_SET_CALLBACK(*pcb, send_data, on_send_data_cb); |
| 732 | NGH2_SET_CALLBACK(*pcb, on_frame_send, on_frame_send_cb); |
| 733 | NGH2_SET_CALLBACK(*pcb, on_frame_not_send, on_frame_not_send_cb); |
| 734 | #ifdef H2_NG2_INVALID_HEADER_CB |
| 735 | NGH2_SET_CALLBACK(*pcb, on_invalid_header, on_invalid_header_cb); |
| 736 | #endif |
| 737 | NGH2_SET_CALLBACK(*pcb, select_padding, select_padding_cb); |
| 738 | return APR_SUCCESS; |
| 739 | } |
| 740 | |
| 741 | static void update_child_status(h2_session *session, int status, |
| 742 | const char *msg, const h2_stream *stream) |