Hi, this behaviour is really annoying, in tcp server, when the last user disconnects, we don't update the status line, so it keeps showing 1 connected user, it would be better to show Conn: 0.
BEFORE sauron:haesbaert: tcpbench -s elapsed_ms bytes mbps bwidth 1000 645674612 5165.397 100.00% Conn: 1 Mbps: 5165.397 Peak Mbps: 5165.397 Avg Mbps: 5165.397 2000 673254000 5386.032 100.00% Conn: 1 Mbps: 5386.032 Peak Mbps: 5386.032 Avg Mbps: 5386.032 AFTER gimli:obj: ./tcpbench -s elapsed_ms bytes mbps bwidth 1000 314833908 2518.671 100.00% Conn: 1 Mbps: 2518.671 Peak Mbps: 2518.671 Avg Mbps: 2518.671 Conn: 0 Mbps: 0.000 Peak Mbps: 2518.671 Avg Mbps: 0.000 Also, only start timer if this is the first connection, this prevents the display from not running while we have clients connecting (since it always pushes the display 1 second in the future). Index: tcpbench.c =================================================================== RCS file: /cvs/src/usr.bin/tcpbench/tcpbench.c,v retrieving revision 1.35 diff -d -u -p -r1.35 tcpbench.c --- tcpbench.c 8 May 2012 01:39:58 -0000 1.35 +++ tcpbench.c 15 Jun 2012 23:04:23 -0000 @@ -568,7 +568,7 @@ tcp_process_slice(int fd, short event, v mainstats.peak_mbps = slice_mbps; printf("Conn: %3d Mbps: %12.3Lf Peak Mbps: %12.3Lf Avg Mbps: %12.3Lf\n", mainstats.nconns, slice_mbps, mainstats.peak_mbps, - slice_mbps / mainstats.nconns); + mainstats.nconns ? slice_mbps / mainstats.nconns : 0); mainstats.slice_bytes = 0; set_slice_timer(mainstats.nconns > 0); @@ -657,7 +657,6 @@ tcp_server_handle_sc(int fd, short event free(sc); mainstats.nconns--; - set_slice_timer(mainstats.nconns > 0); return; } if (ptb->vflag >= 3) @@ -723,7 +722,8 @@ tcp_server_accept(int fd, short event, v event_add(&sc->ev, NULL); TAILQ_INSERT_TAIL(&sc_queue, sc, entry); mainstats.nconns++; - set_slice_timer(mainstats.nconns > 0); + if (mainstats.nconns == 1) + set_slice_timer(1); if (ptb->vflag) fprintf(stderr, "Accepted connection from %s, fd = %d\n", tmp, sc->fd); @@ -934,7 +934,8 @@ client_init(struct addrinfo *aitop, int event_add(&sc->ev, NULL); TAILQ_INSERT_TAIL(&sc_queue, sc, entry); mainstats.nconns++; - set_slice_timer(mainstats.nconns > 0); + if (mainstats.nconns == 1) + set_slice_timer(1); } freeaddrinfo(aitop); if (aib != NULL)