diff --git a/include/haproxy/sink-t.h b/include/haproxy/sink-t.h index d5e1cec57..990aa72d6 100644 --- a/include/haproxy/sink-t.h +++ b/include/haproxy/sink-t.h @@ -40,6 +40,7 @@ struct sink_forward_target { struct server *srv; // used server struct appctx *appctx; // appctx of current session size_t ofs; // ring buffer reader offset + size_t e_processed; // processed events struct sink *sink; // the associated sink struct sink_forward_target *next; __decl_thread(HA_SPINLOCK_T lock); // lock to protect current struct diff --git a/src/sink.c b/src/sink.c index 29b68a018..16597b211 100644 --- a/src/sink.c +++ b/src/sink.c @@ -353,6 +353,7 @@ static void _sink_forward_io_handler(struct appctx *appctx, struct sink *sink = sft->sink; struct ring *ring = sink->ctx.ring; size_t ofs, last_ofs; + size_t processed; int ret = 0; if (unlikely(se_fl_test(appctx->sedesc, (SE_FL_EOS|SE_FL_ERROR)))) { @@ -383,7 +384,8 @@ static void _sink_forward_io_handler(struct appctx *appctx, MT_LIST_DELETE(&appctx->wait_entry); ret = ring_dispatch_messages(ring, appctx, &sft->ofs, &last_ofs, 0, - msg_handler, NULL); + msg_handler, &processed); + sft->e_processed += processed; if (ret) { /* let's be woken up once new data arrive */