DetectRulePacketRules(th_v, de_ctx, det_ctx, p, pflow, &scratch);
PACKET_PROFILING_DETECT_END(p, PROF_DETECT_RULES);
- /* run tx/state inspection */
- if (pflow && pflow->alstate) {
+ /* run tx/state inspection. Don't call for ICMP error msgs. */
+ if (pflow && pflow->alstate && likely(pflow->proto == p->proto)) {
PACKET_PROFILING_DETECT_START(p, PROF_DETECT_TX);
DetectRunTx(th_v, de_ctx, det_ctx, p, pflow, &scratch);
PACKET_PROFILING_DETECT_END(p, PROF_DETECT_TX);