X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Ftop.c;fp=src%2Ftop.c;h=2824261c2a2a94e5de48d3ce67ef8a623d9b93ac;hp=4db930439ab80c205998c2f3739ab45538b303d2;hb=f134bd0c9c2213fbbb3967f3d784759cb65e2c76;hpb=09e000ba54fd4a4ffe3e5c15ee7aeadac35d6996 diff --git a/src/top.c b/src/top.c index 4db93043..2824261c 100644 --- a/src/top.c +++ b/src/top.c @@ -66,8 +66,10 @@ static float bscale = 1; static const char *punit = "pkts"; static float pscale = 1; -static void update(int fd) { - sendline(fd, "%d %d", CONTROL, REQ_DUMP_TRAFFIC); +static bool update(int fd) { + if(!sendline(fd, "%d %d", CONTROL, REQ_DUMP_TRAFFIC)) + return false; + gettimeofday(&cur, NULL); timersub(&cur, &prev, &diff); @@ -90,13 +92,10 @@ static void update(int fd) { int n = sscanf(line, "%d %d %s %"PRIu64" %"PRIu64" %"PRIu64" %"PRIu64, &code, &req, name, &in_packets, &in_bytes, &out_packets, &out_bytes); if(n == 2) - break; + return true; - if(n != 7) { - endwin(); - fprintf(stderr, "Error receiving traffic information\n"); - exit(1); - } + if(n != 7) + return false; nodestats_t *found = NULL; @@ -133,6 +132,8 @@ static void update(int fd) { found->out_packets = out_packets; found->out_bytes = out_bytes; } + + return false; } static int cmpfloat(float a, float b) { @@ -246,7 +247,9 @@ void top(int fd) { bool running = true; while(running) { - update(fd); + if(!update(fd)) + break; + redraw(); switch(getch()) {