mirror of
https://github.com/nmap/nmap.git
synced 2025-12-06 12:41:29 +00:00
Simplify boostScanDelay to make it clear what limits are in place.
This commit is contained in:
@@ -469,6 +469,9 @@ HostScanStats::HostScanStats(Target *t, UltraScanInfo *UltraSI) {
|
||||
memset(&sdn, 0, sizeof(sdn));
|
||||
sdn.last_boost = USI->now;
|
||||
sdn.delayms = o.scan_delay;
|
||||
sdn.maxdelay = USI->tcp_scan ? o.maxTCPScanDelay() :
|
||||
USI->udp_scan ? o.maxUDPScanDelay() :
|
||||
o.maxSCTPScanDelay();
|
||||
rld.max_tryno_sent = 0;
|
||||
rld.rld_waiting = false;
|
||||
rld.rld_waittime = USI->now;
|
||||
@@ -1917,13 +1920,13 @@ static bool ultrascan_port_pspec_update(const UltraScanInfo *USI,
|
||||
/* Boost the scan delay for this host, usually because too many packet
|
||||
drops were detected. */
|
||||
void HostScanStats::boostScanDelay() {
|
||||
unsigned int maxAllowed = USI->tcp_scan ? o.maxTCPScanDelay() :
|
||||
USI->udp_scan ? o.maxUDPScanDelay() :
|
||||
o.maxSCTPScanDelay();
|
||||
if (sdn.delayms == 0)
|
||||
sdn.delayms = (USI->udp_scan) ? 50 : 5; // In many cases, a pcap wait takes a minimum of 80ms, so this matters little :(
|
||||
else sdn.delayms = MIN(sdn.delayms * 2, MAX(sdn.delayms, 1000));
|
||||
sdn.delayms = MIN(sdn.delayms, maxAllowed);
|
||||
if (sdn.delayms < 1000) {
|
||||
if (sdn.delayms == 0)
|
||||
sdn.delayms = (USI->udp_scan) ? 50 : 5; // In many cases, a pcap wait takes a minimum of 80ms, so this matters little :(
|
||||
else
|
||||
sdn.delayms = MIN(sdn.delayms * 2, 1000);
|
||||
}
|
||||
sdn.delayms = MIN(sdn.delayms, sdn.maxdelay);
|
||||
sdn.last_boost = USI->now;
|
||||
sdn.droppedRespSinceDelayChanged = 0;
|
||||
sdn.goodRespSinceDelayChanged = 0;
|
||||
|
||||
@@ -320,6 +320,7 @@ struct send_delay_nfo {
|
||||
unsigned int goodRespSinceDelayChanged;
|
||||
unsigned int droppedRespSinceDelayChanged;
|
||||
struct timeval last_boost; /* Most recent time of increase to delayms. Init to creation time. */
|
||||
int maxdelay;
|
||||
};
|
||||
|
||||
/* To test for rate limiting, there is a delay in sending the first packet
|
||||
|
||||
Reference in New Issue
Block a user