f->protoctx = &ssn;
f->proto = IPPROTO_TCP;
f->alproto = ALPROTO_HTTP1;
+ f->flags |= FLOW_SGH_TOCLIENT | FLOW_SGH_TOSERVER;
const char *str = "GET / HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Suricata/1.0\r\n\r\n";
int r = AppLayerParserParse(NULL, alp_tctx, f, ALPROTO_HTTP1, STREAM_TOSERVER | STREAM_START,
f.proto = IPPROTO_UDP;
f.protomap = FlowGetProtoMapping(f.proto);
f.alproto = ALPROTO_IKE;
+ f.flags |= FLOW_SGH_TOCLIENT | FLOW_SGH_TOSERVER;
StreamTcpInitConfig(true);
}
if (txd && has_tx_detect_flags) {
- if (!IS_DISRUPTED(ts_disrupt_flags) && f->sgh_toserver != NULL) {
+ if (!IS_DISRUPTED(ts_disrupt_flags) &&
+ (f->sgh_toserver != NULL || (f->flags & FLOW_SGH_TOSERVER) == 0)) {
uint64_t detect_flags_ts = AppLayerParserGetTxDetectFlags(txd, STREAM_TOSERVER);
if (!(detect_flags_ts &
(APP_LAYER_TX_INSPECTED_FLAG | APP_LAYER_TX_SKIP_INSPECT_FLAG))) {
tx_skipped = true;
}
}
- if (!IS_DISRUPTED(tc_disrupt_flags) && f->sgh_toclient != NULL) {
+ if (!IS_DISRUPTED(tc_disrupt_flags) &&
+ (f->sgh_toclient != NULL || (f->flags & FLOW_SGH_TOCLIENT) == 0)) {
uint64_t detect_flags_tc = AppLayerParserGetTxDetectFlags(txd, STREAM_TOCLIENT);
if (!(detect_flags_tc &
(APP_LAYER_TX_INSPECTED_FLAG | APP_LAYER_TX_SKIP_INSPECT_FLAG))) {
f->protoctx = &ssn;
f->proto = IPPROTO_TCP;
f->alproto = ALPROTO_SMB;
+ f->flags |= FLOW_SGH_TOCLIENT | FLOW_SGH_TOSERVER;
char req_str[] ="\x00\x00\x00\x79\xfe\x53\x4d\x42\x40\x00\x01\x00\x00\x00\x00\x00" \
"\x05\x00\xe0\x1e\x10\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00" \