mod.dronescan/dronescan.cc:1586:
if ((unsigned int)(jcFCInterval - ::time(0)) >= jcJoinsPerIPTime) {
jcFCInterval is a static initialised to ::time(0) (dronescan.cc:1325) and is only ever reassigned to ::time(0) inside this same block (dronescan.cc:1588). It is therefore always less than or equal to ::time(0) when the check runs, so jcFCInterval - ::time(0) is always <= 0. Cast to unsigned int, that is either 0 — within the same second — or wraps to a value near 4.29e9, which exceeds any realistic configured jcJoinsPerIPTime.
Effect: the per-IP join sweep is skipped only within the same second and otherwise runs on essentially every pass, rather than once every jcJoinsPerIPTime seconds as the reset-then-compare structure implies.
The operands appear to be reversed. Fix: (::time(0) - jcFCInterval) >= jcJoinsPerIPTime.
mod.dronescan/dronescan.cc:1586:jcFCIntervalis a static initialised to::time(0)(dronescan.cc:1325) and is only ever reassigned to::time(0)inside this same block (dronescan.cc:1588). It is therefore always less than or equal to::time(0)when the check runs, sojcFCInterval - ::time(0)is always<= 0. Cast tounsigned int, that is either0— within the same second — or wraps to a value near 4.29e9, which exceeds any realistic configuredjcJoinsPerIPTime.Effect: the per-IP join sweep is skipped only within the same second and otherwise runs on essentially every pass, rather than once every
jcJoinsPerIPTimeseconds as the reset-then-compare structure implies.The operands appear to be reversed. Fix:
(::time(0) - jcFCInterval) >= jcJoinsPerIPTime.