static void FlowUpdate(ThreadVars *tv, StreamTcpThread *stt, Packet *p)
{
FlowHandlePacketUpdate(p->flow, p);
-
- /* handle the app layer part of the UDP packet payload */
- if (p->proto == IPPROTO_UDP) {
- AppLayerHandleUdp(tv, stt->ra_ctx->app_tctx, p, p->flow);
- }
}
static TmEcode FlowWorkerThreadInit(ThreadVars *tv, void *initdata, void **data)
* by the other thread modules before packet 'p'. */
PacketEnqueue(preq, x);
}
+
+ /* handle the app layer part of the UDP packet payload */
+ } else if (p->flow && p->proto == IPPROTO_UDP) {
+ FLOWWORKER_PROFILING_START(p, PROFILE_FLOWWORKER_APPLAYERUDP);
+ AppLayerHandleUdp(tv, fw->stream_thread->ra_ctx->app_tctx, p, p->flow);
+ FLOWWORKER_PROFILING_END(p, PROFILE_FLOWWORKER_APPLAYERUDP);
}
/* handle Detect */
return "flow";
case PROFILE_FLOWWORKER_STREAM:
return "stream";
+ case PROFILE_FLOWWORKER_APPLAYERUDP:
+ return "app-layer";
case PROFILE_FLOWWORKER_DETECT:
return "detect";
case PROFILE_FLOWWORKER_SIZE:
enum ProfileFlowWorkerId {
PROFILE_FLOWWORKER_FLOW = 0,
PROFILE_FLOWWORKER_STREAM,
+ PROFILE_FLOWWORKER_APPLAYERUDP,
PROFILE_FLOWWORKER_DETECT,
PROFILE_FLOWWORKER_SIZE
};