aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsumikawa <sumikawa@FreeBSD.org>2005-05-19 17:28:47 +0800
committersumikawa <sumikawa@FreeBSD.org>2005-05-19 17:28:47 +0800
commit884466858a1f1724daedd229d6f5dd6b54b1a479 (patch)
treec7782212f4616611a37a229b81f6c17980fff0c4
parentbfedb55eb47172e70f270b3ccc39f4b6b3804377 (diff)
downloadfreebsd-ports-graphics-884466858a1f1724daedd229d6f5dd6b54b1a479.tar.gz
freebsd-ports-graphics-884466858a1f1724daedd229d6f5dd6b54b1a479.tar.zst
freebsd-ports-graphics-884466858a1f1724daedd229d6f5dd6b54b1a479.zip
Fix infinite loop when time got backwards
PR: ports/78302 Submitted by: marck
-rw-r--r--net/zebra/Makefile1
-rw-r--r--net/zebra/files/patch-ospfd_ospf_lsa.c37
2 files changed, 38 insertions, 0 deletions
diff --git a/net/zebra/Makefile b/net/zebra/Makefile
index f1236972a86..f99cda7a82d 100644
--- a/net/zebra/Makefile
+++ b/net/zebra/Makefile
@@ -7,6 +7,7 @@
PORTNAME= zebra
PORTVERSION= 0.95
+PORTREVISION= 1
CATEGORIES= net ipv6
MASTER_SITES= ftp://ftp.zebra.org/pub/zebra/ \
ftp://ftp.ripe.net/mirrors/sites/ftp.zebra.org/pub/zebra/ \
diff --git a/net/zebra/files/patch-ospfd_ospf_lsa.c b/net/zebra/files/patch-ospfd_ospf_lsa.c
new file mode 100644
index 00000000000..6d55b5316eb
--- /dev/null
+++ b/net/zebra/files/patch-ospfd_ospf_lsa.c
@@ -0,0 +1,37 @@
+--- ospfd/ospf_lsa.c.orig Mon Feb 28 03:09:10 2005
++++ ospfd/ospf_lsa.c Thu May 19 17:59:09 2005
+@@ -3324,6 +3324,7 @@
+ listnode node;
+ struct ospf *ospf = THREAD_ARG (t);
+ int i;
++ time_t ct;
+ list lsa_to_refresh = list_new ();
+
+ if (IS_DEBUG_OSPF (lsa, LSA_REFRESH))
+@@ -3331,15 +3332,25 @@
+
+
+ i = ospf->lsa_refresh_queue.index;
++
++ if ((ct = time(NULL)) < ospf->lsa_refresher_started) {
++ zlog_info ("LSA[Refresh]: ospf_lsa_refresh_walker(): HACK: fixing lsa_refresher_started: %d -> %d", ospf->lsa_refresher_started, ct);
++ ospf->lsa_refresher_started = ct;
++ }
+
+ ospf->lsa_refresh_queue.index =
+ (ospf->lsa_refresh_queue.index +
+- (time (NULL) - ospf->lsa_refresher_started) / OSPF_LSA_REFRESHER_GRANULARITY)
++ (ct - ospf->lsa_refresher_started) / OSPF_LSA_REFRESHER_GRANULARITY)
+ % OSPF_LSA_REFRESHER_SLOTS;
+
+ if (IS_DEBUG_OSPF (lsa, LSA_REFRESH))
+ zlog_info ("LSA[Refresh]: ospf_lsa_refresh_walker(): next index %d",
+ ospf->lsa_refresh_queue.index);
++
++ if (ospf->lsa_refresh_queue.index >= OSPF_LSA_REFRESHER_SLOTS) {
++ zlog_info ("LSA[Refresh]: ospf_lsa_refresh_walker(): HACK: fixing index: %hu -> 0", ospf->lsa_refresh_queue.index);
++ ospf->lsa_refresh_queue.index = 0;
++ }
+
+ for (;i != ospf->lsa_refresh_queue.index;
+ i = (i + 1) % OSPF_LSA_REFRESHER_SLOTS)