use super::parser::*;
use crate::applayer::{self, LoggerFlags};
use crate::applayer::*;
+use crate::conf::conf_get;
use crate::core::*;
use nom7::Err;
use std;
// this value, it will be truncated. Default: 1MB.
static mut MAX_MSG_LEN: u32 = 1048576;
-//TODO make this configurable
-const MQTT_MAX_TX: usize = 1024;
+static mut MQTT_MAX_TX: usize = 1024;
static mut ALPROTO_MQTT: AppProto = ALPROTO_UNKNOWN;
} else {
tx.toserver = true;
}
- if self.transactions.len() > MQTT_MAX_TX {
+ if self.transactions.len() > unsafe { MQTT_MAX_TX } {
for tx_old in &mut self.transactions {
if !tx_old.complete {
tx_old.complete = true;
if AppLayerParserConfParserEnabled(ip_proto_str.as_ptr(), parser.name) != 0 {
let _ = AppLayerRegisterParser(&parser, alproto);
}
+ if let Some(val) = conf_get("app-layer.protocols.mqtt.max-tx") {
+ if let Ok(v) = val.parse::<usize>() {
+ MQTT_MAX_TX = v;
+ } else {
+ SCLogError!("Invalid value for mqtt.max-tx");
+ }
+ }
} else {
SCLogDebug!("Protocol detector and parser disabled for MQTT.");
}
# max-msg-length: 1mb
# subscribe-topic-match-limit: 100
# unsubscribe-topic-match-limit: 100
+ # Maximum number of live MQTT transactions per flow
+ # max-tx: 4096
krb5:
enabled: yes
snmp: