From ed791a562eddbcd14b31063c6a1519c2453c3a76 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Tue, 9 Dec 2014 13:48:00 +0100 Subject: [PATCH] stream: track data sent to app-layer --- src/stream-tcp-reassemble.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/stream-tcp-reassemble.c b/src/stream-tcp-reassemble.c index f42f1fa8be..125ab85211 100644 --- a/src/stream-tcp-reassemble.c +++ b/src/stream-tcp-reassemble.c @@ -2851,6 +2851,7 @@ typedef struct ReassembleData_ { uint32_t data_len; uint8_t data[4096]; int partial; /* last segment was processed only partially */ + uint32_t data_sent; /* data passed on this run */ } ReassembleData; int DoHandleGap(ThreadVars *tv, TcpReassemblyThreadCtx *ra_ctx, @@ -2870,6 +2871,7 @@ int DoHandleGap(ThreadVars *tv, TcpReassemblyThreadCtx *ra_ctx, AppLayerHandleTCPData(tv, ra_ctx, p, p->flow, ssn, stream, rd->data, rd->data_len, flags); AppLayerProfilingStore(ra_ctx->app_tctx, p); + rd->data_sent += rd->data_len; rd->data_len = 0; } @@ -2988,6 +2990,7 @@ static inline int DoReassemble(ThreadVars *tv, TcpReassemblyThreadCtx *ra_ctx, AppLayerHandleTCPData(tv, ra_ctx, p, p->flow, ssn, stream, rd->data, rd->data_len, flags); AppLayerProfilingStore(ra_ctx->app_tctx, p); + rd->data_sent += rd->data_len; rd->data_len = 0; /* if after the first data chunk we have no alproto yet, @@ -3048,6 +3051,7 @@ static inline int DoReassemble(ThreadVars *tv, TcpReassemblyThreadCtx *ra_ctx, AppLayerHandleTCPData(tv, ra_ctx, p, p->flow, ssn, stream, rd->data, rd->data_len, flags); AppLayerProfilingStore(ra_ctx->app_tctx, p); + rd->data_sent += rd->data_len; rd->data_len = 0; /* if after the first data chunk we have no alproto yet, @@ -3149,6 +3153,7 @@ int StreamTcpReassembleAppLayer (ThreadVars *tv, TcpReassemblyThreadCtx *ra_ctx, ReassembleData rd; rd.ra_base_seq = stream->ra_app_base_seq; rd.data_len = 0; + rd.data_sent = 0; rd.partial = FALSE; uint32_t next_seq = rd.ra_base_seq + 1;