From e3f89fa2753da08e4a7b55d5e9d288eea92cba40 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Fri, 11 Sep 2009 18:21:57 +0000 Subject: [PATCH] Add a trivial race-fix from Chromium: do not try to re-detect whether we have a monotonic clock every time we make a new event_base. svn:r1427 --- ChangeLog | 2 ++ event.c | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/ChangeLog b/ChangeLog index fa69e4a4..c4df6844 100644 --- a/ChangeLog +++ b/ChangeLog @@ -18,6 +18,8 @@ Changes in 2.0.3-alpha: o New functions to explicitly reference a socket used by an evhttp object. Patches from David Reiss. o When we send a BEV_EVENT_CONNECTED to indicate connected status, we no longer invoke the write callback as well unless we actually wrote data too. o If the kernel tells us that there are a negative number of bytes to read from a socket, do not believe it. Fixes bug 2841177; found by Alexander Pronchenkov. + o Do not detect whether we have monotonic clock support every time a new event base is created: instead do it only once. Patch taken from Chromium. + Changes in 2.0.2-alpha: o Add a new flag to bufferevents to make all callbacks automatically deferred. diff --git a/event.c b/event.c index 5713f62e..6a509e3f 100644 --- a/event.c +++ b/event.c @@ -151,9 +151,15 @@ detect_monotonic(void) { #if defined(_EVENT_HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC) struct timespec ts; + static int use_monotonic_initialized = 0; + + if (use_monotonic_initialized) + return; if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0) use_monotonic = 1; + + use_monotonic_initialized = 1; #endif } -- 2.50.1