| 739 | } |
| 740 | |
| 741 | static void update_child_status(h2_session *session, int status, |
| 742 | const char *msg, const h2_stream *stream) |
| 743 | { |
| 744 | /* Assume that we also change code/msg when something really happened and |
| 745 | * avoid updating the scoreboard in between */ |
| 746 | if (session->last_status_code != status |
| 747 | || session->last_status_msg != msg) { |
| 748 | char sbuffer[1024]; |
| 749 | sbuffer[0] = '\0'; |
| 750 | if (stream) { |
| 751 | apr_snprintf(sbuffer, sizeof(sbuffer), |
| 752 | ": stream %d, %s %s", |
| 753 | stream->id, |
| 754 | stream->request? stream->request->method : "", |
| 755 | stream->request? stream->request->path : ""); |
| 756 | } |
| 757 | apr_snprintf(session->status, sizeof(session->status), |
| 758 | "[%d/%d] %s%s", |
| 759 | (int)(session->remote.emitted_count + session->pushes_submitted), |
| 760 | (int)session->streams_done, |
| 761 | msg? msg : "-", sbuffer); |
| 762 | ap_update_child_status_from_server(session->c1->sbh, status, |
| 763 | session->c1, session->s); |
| 764 | ap_update_child_status_descr(session->c1->sbh, status, session->status); |
| 765 | } |
| 766 | } |
| 767 | |
| 768 | static apr_status_t h2_session_shutdown_notice(h2_session *session) |
| 769 | { |
no test coverage detected