@@ -523,16 +523,6 @@ void setup(int icmp_sock)
gettimeofday(&start_time, NULL);
- if (deadline) {
- struct itimerval it;
-
- it.it_interval.tv_sec = 0;
- it.it_interval.tv_usec = 0;
- it.it_value.tv_sec = deadline;
- it.it_value.tv_usec = 0;
- setitimer(ITIMER_REAL, &it, NULL);
- }
-
if (isatty(STDOUT_FILENO)) {
struct winsize w;
@@ -553,6 +543,7 @@ void main_loop(int icmp_sock, __u8 *pack
int cc;
int next;
int polling;
+ int sig_deadline = 0;
iov.iov_base = (char *)packet;
@@ -567,9 +558,22 @@ void main_loop(int icmp_sock, __u8 *pack
/* Check for and do special actions. */
if (status_snapshot)
status();
+ if((npackets == ntransmitted) && deadline &&
+ (sig_deadline == 0)){
+ sig_deadline++;
+ struct itimerval it;
+
+ it.it_interval.tv_sec = 0;
+ it.it_interval.tv_usec = 0;
+ it.it_value.tv_sec = deadline;
+ it.it_value.tv_usec = 0;
+ setitimer(ITIMER_REAL, &it, NULL);
+ }
/* Send probes scheduled to this time. */
do {
+ if(npackets == ntransmitted)
+ break;
next = pinger();
next = schedule_exit(next);
} while (next <= 0);