{ FTP_COMMAND_UNKNOWN, NULL, 0}
};
uint64_t ftp_config_memcap = 0;
+uint32_t ftp_config_maxtx = 1024;
SC_ATOMIC_DECLARE(uint64_t, ftp_memuse);
SC_ATOMIC_DECLARE(uint64_t, ftp_memcap);
SC_ATOMIC_INIT(ftp_memuse);
SC_ATOMIC_INIT(ftp_memcap);
+
+ if ((ConfGet("app-layer.protocols.ftp.max-tx", &conf_val)) == 1) {
+ if (ParseSizeStringU32(conf_val, &ftp_config_maxtx) < 0) {
+ SCLogError(SC_ERR_SIZE_PARSE,
+ "Error parsing ftp.max-tx "
+ "from conf file - %s.",
+ conf_val);
+ }
+ SCLogInfo("FTP max tx: %" PRIu32, ftp_config_maxtx);
+ }
}
static void FTPIncrMemuse(uint64_t size)
static FTPTransaction *FTPTransactionCreate(FtpState *state)
{
SCEnter();
+ FTPTransaction *firsttx = TAILQ_FIRST(&state->tx_list);
+ if (firsttx && state->tx_cnt - firsttx->tx_id > ftp_config_maxtx) {
+ // FTP does not set events yet...
+ return NULL;
+ }
FTPTransaction *tx = FTPCalloc(1, sizeof(*tx));
if (tx == NULL) {
return NULL;