diff options
-rw-r--r-- | mbone/dbeacon/Makefile | 4 | ||||
-rw-r--r-- | mbone/dbeacon/distinfo | 4 | ||||
-rw-r--r-- | mbone/dbeacon/patches/patch-dbeacon__posix.cpp | 32 |
3 files changed, 22 insertions, 18 deletions
diff --git a/mbone/dbeacon/Makefile b/mbone/dbeacon/Makefile index ec01a468726..077669af24a 100644 --- a/mbone/dbeacon/Makefile +++ b/mbone/dbeacon/Makefile @@ -1,8 +1,8 @@ -# $NetBSD: Makefile,v 1.6 2015/01/13 20:25:13 he Exp $ +# $NetBSD: Makefile,v 1.7 2015/07/01 09:22:20 he Exp $ # DISTNAME= dbeacon-0.3.9.1 -PKGREVISION= 4 +PKGREVISION= 5 CATEGORIES= mbone MASTER_SITES= http://fivebits.net/files/dbeacon/ diff --git a/mbone/dbeacon/distinfo b/mbone/dbeacon/distinfo index eef36d88441..7cc3a1c7d14 100644 --- a/mbone/dbeacon/distinfo +++ b/mbone/dbeacon/distinfo @@ -1,4 +1,4 @@ -$NetBSD: distinfo,v 1.5 2015/01/13 20:25:13 he Exp $ +$NetBSD: distinfo,v 1.6 2015/07/01 09:22:20 he Exp $ SHA1 (dbeacon-0.3.9.1.tar.gz) = d6131e723a251c01d245fcb3ead864f1348e2565 RMD160 (dbeacon-0.3.9.1.tar.gz) = 81ec4cfe1c2890c7cdb5afbbd98fd2d0cf2a57a3 @@ -6,4 +6,4 @@ Size (dbeacon-0.3.9.1.tar.gz) = 43893 bytes SHA1 (patch-contrib_matrix.pl) = 50a5db8c19e7500ef210b873c8dd114edde5dc40 SHA1 (patch-dbeacon.cpp) = a666e67d9523d7cd2d11cd60b61e01c4f7f933c7 SHA1 (patch-dbeacon.h) = 8396f6702402100f37cbae30d19cd2b0bb28fb4a -SHA1 (patch-dbeacon__posix.cpp) = 634eb939c71d59d191c3e44242290ab07cb77b08 +SHA1 (patch-dbeacon__posix.cpp) = 757a4f91078348a00bbb2258496f3916bec49ef5 diff --git a/mbone/dbeacon/patches/patch-dbeacon__posix.cpp b/mbone/dbeacon/patches/patch-dbeacon__posix.cpp index 3376d96d320..e2fbe2ce8d3 100644 --- a/mbone/dbeacon/patches/patch-dbeacon__posix.cpp +++ b/mbone/dbeacon/patches/patch-dbeacon__posix.cpp @@ -1,45 +1,49 @@ -$NetBSD: patch-dbeacon__posix.cpp,v 1.2 2015/01/13 20:25:13 he Exp $ +$NetBSD: patch-dbeacon__posix.cpp,v 1.3 2015/07/01 09:22:20 he Exp $ -Replace use of times() with gettimeofday(), since all we use it -for is to get a millisecond timestamp, and with a 32-bit unsigned -clock_t and 100Hz tick, times() wraps around every 500 days or so, -and the code then falls into an assert() in dbeacon.cpp. +Replace use of times() with clock_gettime(CLOCK_MONOTONIC), since +all we use it for is to get a millisecond timestamp, and with a +32-bit unsigned clock_t and 100Hz tick, times() wraps around every +500 days or so, and the code then falls into an assert() in +dbeacon.cpp. -Still retry a few times if gettimeofday() for some reason should +Still retry a few times if clock_gettime() for some reason should decide to fail. --- dbeacon_posix.cpp.orig 2007-06-09 11:35:57.000000000 +0000 +++ dbeacon_posix.cpp -@@ -25,6 +25,7 @@ +@@ -23,8 +23,10 @@ + #include <netinet/in.h> + #include <arpa/inet.h> #include <sys/time.h> ++#include <time.h> #include <netdb.h> #include <unistd.h> +#include <syslog.h> #include <sys/uio.h> #include <sys/times.h> -@@ -515,11 +516,24 @@ void address::set(const sockaddr *sa) { +@@ -515,11 +517,24 @@ void address::set(const sockaddr *sa) { } uint64_t get_timestamp() { - struct tms tmp; -+ struct timeval tv; ++ struct timespec ts; + uint64_t timestamp; + int n = 0; - uint64_t v = times(&tmp); + retry: -+ if (gettimeofday(&tv, 0) != 0) { -+ log(LOG_WARNING, "gettimeofday() failed: %m"); ++ if (clock_gettime(CLOCK_MONOTONIC, &ts) != 0) { ++ log(LOG_WARNING, "clock_gettime(CLOCK_MONOTONIC) failed: %m"); + if (++n < 5) + goto retry; + else + log(LOG_ERR, -+ "gettimeofday() failed after 5 retries: %m"); ++ "clock_gettime(CLOCK_MONOTONIC) failed after 5 retries: %m"); + } -+ timestamp = tv.tv_sec; ++ timestamp = ts.tv_sec; + timestamp *= 1000; -+ timestamp += tv.tv_usec / 1000; ++ timestamp += ts.tv_nsec / 1000000; - return (v * 1000) / sysconf(_SC_CLK_TCK); + return timestamp; |