svn commit: r269802 - stable/9/sbin/ping6

Xin LI delphij at FreeBSD.org
Mon Aug 11 07:00:57 UTC 2014


Author: delphij
Date: Mon Aug 11 07:00:57 2014
New Revision: 269802
URL: http://svnweb.freebsd.org/changeset/base/269802

Log:
  MFC r269180:
  
  When interval is set to very small value with limited amount of packets,
  ping6(8) would quit before the remote side gets a chance to respond.
  
  Solve this by resetting the itimer when we have reached the maximum packet
  number have reached, but let the other handling to continue.
  
  PR:        bin/151023
  Submitted by:    tjmao at tjmao.net

Modified:
  stable/9/sbin/ping6/ping6.c
Directory Properties:
  stable/9/sbin/ping6/   (props changed)

Modified: stable/9/sbin/ping6/ping6.c
==============================================================================
--- stable/9/sbin/ping6/ping6.c	Mon Aug 11 06:55:41 2014	(r269801)
+++ stable/9/sbin/ping6/ping6.c	Mon Aug 11 07:00:57 2014	(r269802)
@@ -1088,8 +1088,14 @@ main(int argc, char *argv[])
 		/* signal handling */
 		if (seenalrm) {
 			/* last packet sent, timeout reached? */
-			if (npackets && ntransmitted >= npackets)
-				break;
+			if (npackets && ntransmitted >= npackets) {
+				struct timeval zerotime = {0, 0};
+				itimer.it_value = zerotime;
+				itimer.it_interval = zerotime;
+				(void)setitimer(ITIMER_REAL, &itimer, NULL);
+				seenalrm = 0;   /* clear flag */
+				continue;
+			}
 			retransmit();
 			seenalrm = 0;
 			continue;


More information about the svn-src-stable-9 mailing list