--- server/scoreboard.c (revision 1780253) +++ server/scoreboard.c (working copy) @@ -364,6 +364,18 @@ return (ap_scoreboard_image ? 1 : 0); } +AP_DECLARE(void) ap_set_conn_count(ap_sb_handle_t *sb, request_rec *r, unsigned short conn_count) +{ + worker_score *ws; + apr_off_t bytes; + + if (!sb) + return; + + ws = &ap_scoreboard_image->servers[sb->child_num][sb->thread_num]; + ws->conn_count = conn_count; +} + AP_DECLARE(void) ap_increment_counts(ap_sb_handle_t *sb, request_rec *r) { worker_score *ws; @@ -391,6 +403,7 @@ ws->conn_count++; ws->bytes_served += bytes; ws->my_bytes_served += bytes; + ws->conn_bytes += bytes; } @@ -489,7 +502,8 @@ ws->my_access_count = 0L; ws->my_bytes_served = 0L; } - ws->conn_count = 0; + + ws->conn_count = 99; ws->conn_bytes = 0; ws->last_used = apr_time_now(); } --- modules/http/http_core.c (revision 1780253) +++ modules/http/http_core.c (working copy) @@ -142,7 +142,7 @@ while (cs->state == CONN_STATE_READ_REQUEST_LINE) { ap_update_child_status_from_conn(c->sbh, SERVER_BUSY_READ, c); - + ap_set_conn_count(c->sbh, r, c->keepalives); if ((r = ap_read_request(c))) { c->keepalive = AP_CONN_UNKNOWN; @@ -150,6 +150,7 @@ if (r->status == HTTP_OK) { cs->state = CONN_STATE_HANDLER; + ap_set_conn_count(c->sbh, r, c->keepalives+1); ap_update_child_status(c->sbh, SERVER_BUSY_WRITE, r); ap_process_async_request(r); /* After the call to ap_process_request, the --- include/scoreboard.h (revision 1780253) +++ include/scoreboard.h (working copy) @@ -169,6 +169,7 @@ */ AP_DECLARE(int) ap_exists_scoreboard_image(void); AP_DECLARE(void) ap_increment_counts(ap_sb_handle_t *sbh, request_rec *r); +AP_DECLARE(void) ap_set_conn_count(ap_sb_handle_t *sb, request_rec *r, unsigned short conn_count); AP_DECLARE(apr_status_t) ap_reopen_scoreboard(apr_pool_t *p, apr_shm_t **shm, int detached); AP_DECLARE(void) ap_init_scoreboard(void *shared_score);