fix from David Daney, on busybox mailing list:
authorpgf <pgf@69ca8d6d-28ef-0310-b511-8ec308f3f277>
Wed, 29 Mar 2006 23:01:33 +0000 (23:01 +0000)
committerpgf <pgf@69ca8d6d-28ef-0310-b511-8ec308f3f277>
Wed, 29 Mar 2006 23:01:33 +0000 (23:01 +0000)
 > The problem is that if the zcip protocol times out at about the same
 > time another ARP packet is being received, the newly calculated timeout
 > may be set to wait forever.  This prevents the protocol from progressing
 > through its various states.
 >
 > The Fix is to set the timeout to zero if it used to be a positive
 > number, but it has already expired.  This causes the next protocol state
 > to be entered immediately instead of never.
 >
 > If OK please commit.
 >
 > Also note that if you may have to apply the patch on this page:
 >
 > http://www.science.uva.nl/research/air/wiki/LinkLocalARPMeasurements
 >
 > To the linux kernel to get proper zcip behavior.
 >

git-svn-id: svn://busybox.net/trunk/busybox@14698 69ca8d6d-28ef-0310-b511-8ec308f3f277

networking/zcip.c

index 716c4a5..ed30bb3 100644 (file)
@@ -437,7 +437,7 @@ fail:
 
                                gettimeofday(&tv2, NULL);
                                if (timercmp(&tv1, &tv2, <)) {
-                                       timeout = -1;
+                                       timeout = 0;
                                } else {
                                        timersub(&tv1, &tv2, &tv1);
                                        timeout = 1000 * tv1.tv_sec