diff options
author | sumikawa <sumikawa@FreeBSD.org> | 2005-05-19 17:28:47 +0800 |
---|---|---|
committer | sumikawa <sumikawa@FreeBSD.org> | 2005-05-19 17:28:47 +0800 |
commit | 884466858a1f1724daedd229d6f5dd6b54b1a479 (patch) | |
tree | c7782212f4616611a37a229b81f6c17980fff0c4 /net/zebra | |
parent | bfedb55eb47172e70f270b3ccc39f4b6b3804377 (diff) | |
download | freebsd-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
Diffstat (limited to 'net/zebra')
-rw-r--r-- | net/zebra/Makefile | 1 | ||||
-rw-r--r-- | net/zebra/files/patch-ospfd_ospf_lsa.c | 37 |
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) |