From 5748270012688e3342a7667000ee48eecd192a15 Mon Sep 17 00:00:00 2001 From: Michal Sojka Date: Sat, 4 Dec 2010 12:38:42 +0100 Subject: [PATCH] Do not wait indefinitely if some messages are lost --- latester/latester.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/latester/latester.c b/latester/latester.c index a72558a..f3ba4c6 100644 --- a/latester/latester.c +++ b/latester/latester.c @@ -75,6 +75,7 @@ struct options opt = { struct { unsigned enobufs; unsigned overrun; + unsigned lost; } stats; int num_interfaces = 0; @@ -713,7 +714,7 @@ int main(int argc, const char *argv[]) pthread_create(&thread, 0, measure_thread, NULL); - struct timespec next, now, diff; + struct timespec next, now, diff, allsent = {0,0}; clock_gettime(CLOCK_MONOTONIC, &next); int completed = 0; while (!finish_flag && (opt.count == 0 || completed < opt.count)) { @@ -744,10 +745,18 @@ int main(int argc, const char *argv[]) next.tv_sec++; } } + if (opt.count != 0 && count >= opt.count) { + if (allsent.tv_sec == 0) + allsent = now; + if (now.tv_sec - allsent.tv_sec >= 2) + finish_flag = 1; + } } print_progress(); printf("\n"); + stats.lost = msg_in_progress; + pthread_join(thread, NULL); close(completion_pipe[0]); @@ -764,6 +773,8 @@ int main(int argc, const char *argv[]) printf("overrun=%d\n", stats.overrun); if (stats.enobufs) printf("enobufs=%d\n", stats.enobufs); + if (stats.lost) + printf("lost=%d\n", stats.enobufs); return 0; } -- 2.39.2