mirror of
https://github.com/nmap/nmap.git
synced 2025-12-16 04:39:03 +00:00
Fixing a "bug" in Traceroute output. The ScanProgressMeter's endTask() was never called, which threw the output (stdout/XML etc) out of whack. This localizes the SPM stuff to Traceroute::trace(), and all is well :)
This commit is contained in:
@@ -1,4 +1,8 @@
|
||||
# Nmap Changelog ($Id$); -*-text-*-
|
||||
o Fix a small bug in traceroute progress output which neglected printing
|
||||
when it was completed. This caused weirdness, especially when multiple
|
||||
hosts were scanned. [Kris]
|
||||
|
||||
o Fix a portability problem related to the new traceroute
|
||||
functionality so that it compiles on Mac OS X. Thanks to Christophe
|
||||
Thil for reporting the problem and sending the 1-line fix.
|
||||
|
||||
@@ -218,7 +218,6 @@ Traceroute::Traceroute (const char *device_name, devtype type) {
|
||||
|
||||
/* rely on each group using the same device */
|
||||
pd = my_pcap_open_live (device_name, 100, o.spoofsource ? 1 : 0, 2);
|
||||
SPM = new ScanProgressMeter ("Traceroute");
|
||||
|
||||
scaninfo.initial_proto = IPPROTO_IP;
|
||||
scaninfo.open_response = 0;
|
||||
@@ -304,8 +303,6 @@ Traceroute::~Traceroute () {
|
||||
free(hops);
|
||||
for (; it != TraceGroups.end (); ++it)
|
||||
delete (it->second);
|
||||
assert(SPM != NULL);
|
||||
delete (SPM);
|
||||
if (ethsd)
|
||||
ethsd = NULL;
|
||||
close (fd);
|
||||
@@ -789,6 +786,7 @@ Traceroute::trace (vector < Target * >&Targets) {
|
||||
TraceProbe *tp = NULL;
|
||||
TraceGroup *tg = NULL;
|
||||
Target *t = NULL;
|
||||
ScanProgressMeter *SPM;
|
||||
u16 total_size, total_complete;
|
||||
|
||||
if (o.af () == AF_INET6) {
|
||||
@@ -816,6 +814,8 @@ Traceroute::trace (vector < Target * >&Targets) {
|
||||
* legitimate to trace to */
|
||||
sendTTLProbes (Targets, valid_targets);
|
||||
|
||||
SPM = new ScanProgressMeter ("Traceroute");
|
||||
|
||||
while (!readTraceResponses ()) {
|
||||
for (targ = valid_targets.begin (); targ != valid_targets.end (); ++targ) {
|
||||
t = *targ;
|
||||
@@ -861,6 +861,8 @@ Traceroute::trace (vector < Target * >&Targets) {
|
||||
swap (total_complete, total_size);
|
||||
SPM->printStats (MIN ((double) total_complete / total_size, 0.99), NULL);
|
||||
}
|
||||
SPM->endTask(NULL, NULL);
|
||||
delete (SPM);
|
||||
}
|
||||
|
||||
/* Resolves traceroute hops through nmaps
|
||||
|
||||
@@ -317,7 +317,6 @@ class Traceroute {
|
||||
|
||||
|
||||
struct scan_info scaninfo;
|
||||
ScanProgressMeter *SPM;
|
||||
Target **hops;
|
||||
pcap_t *pd;
|
||||
eth_t *ethsd;
|
||||
|
||||
Reference in New Issue
Block a user