if (tx->decoder_events != NULL) {
AppLayerDecoderEventsFreeEvents(&tx->decoder_events);
+ if (tx->de_state != NULL)
+ DetectEngineStateFree(tx->de_state);
#if 0
if (tx->decoder_events->cnt <= smtp_state->events)
smtp_state->events -= tx->decoder_events->cnt;
return NULL;
}
+static DetectEngineState *SMTPGetTxDetectState(void *vtx)
+{
+ SMTPTransaction *tx = (SMTPTransaction *)vtx;
+ return tx->de_state;
+}
+
+static int SMTPSetTxDetectState(void *vtx, DetectEngineState *s)
+{
+ SMTPTransaction *tx = (SMTPTransaction *)vtx;
+ tx->de_state = s;
+ return 0;
+}
+
/**
* \brief Register the SMTP Protocol parser.
*/
AppLayerParserRegisterGetEventInfo(IPPROTO_TCP, ALPROTO_SMTP, SMTPStateGetEventInfo);
AppLayerParserRegisterGetEventsFunc(IPPROTO_TCP, ALPROTO_SMTP, SMTPGetEvents);
+ AppLayerParserRegisterDetectStateFuncs(IPPROTO_TCP, ALPROTO_SMTP,
+ SMTPGetTxDetectState, SMTPSetTxDetectState);
AppLayerParserRegisterLocalStorageFunc(IPPROTO_TCP, ALPROTO_SMTP, SMTPLocalStorageAlloc,
SMTPLocalStorageFree);
MimeDecParseState *mime_state;
AppLayerDecoderEvents *decoder_events; /**< per tx events */
+ DetectEngineState *de_state;
TAILQ_ENTRY(SMTPTransaction_) next;
} SMTPTransaction;