]> granicus.if.org Git - apache/commitdiff
mpm_event: Allow for timer events duplicates.
authorYann Ylavic <ylavic@apache.org>
Fri, 13 Mar 2015 14:47:50 +0000 (14:47 +0000)
committerYann Ylavic <ylavic@apache.org>
Fri, 13 Mar 2015 14:47:50 +0000 (14:47 +0000)
Meanwhile ap[r]_skiplist_add()...

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1666468 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
server/mpm/event/event.c

diff --git a/CHANGES b/CHANGES
index 0222887db0ab75212f064c0698fb1446af8d5312..416240ad5a6d4a7d07ce014a4341a6943d0b9366 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,8 @@ Changes with Apache 2.5.0
      to a local URL-path with the INCLUDES filter active, introduced
      in 2.4.11. PR 57531. [Yann Ylavic]
 
+  *) mpm_event: Allow for timer events duplicates. [Jim Jagielski, Yann Ylavic]
+
   *) mod_dav: Avoid a potential integer underflow in the lock timeout value sent
      back to a client. The answer to a LOCK request could be an extremly large
      integer if the time needed to lock the resource was longer that the
index be464a8772b23fa7e6be791a787afeab3ffe55a3..595105c510a09b4a1210d78cf290119b7aa8ba12 100644 (file)
@@ -1460,7 +1460,7 @@ static int indexing_comp(void *a, void *b)
     apr_time_t t2 = (apr_time_t) (((timer_event_t *) b)->when);
     AP_DEBUG_ASSERT(t1);
     AP_DEBUG_ASSERT(t2);
-    return ((t1 < t2) ? -1 : ((t1 > t2) ? 1 : 0));
+    return ((t1 < t2) ? -1 : (t1 > t2));
 }
 
 static int indexing_compk(void *ac, void *b)
@@ -1468,7 +1468,16 @@ static int indexing_compk(void *ac, void *b)
     apr_time_t *t1 = (apr_time_t *) ac;
     apr_time_t t2 = (apr_time_t) (((timer_event_t *) b)->when);
     AP_DEBUG_ASSERT(t2);
-    return ((*t1 < t2) ? -1 : ((*t1 > t2) ? 1 : 0));
+    return ((*t1 < t2) ? -1 : (*t1 > t2));
+}
+
+static int indexing_add_comp(void *a, void *b)
+{
+    apr_time_t t1 = (apr_time_t) (((timer_event_t *) a)->when);
+    apr_time_t t2 = (apr_time_t) (((timer_event_t *) b)->when);
+    AP_DEBUG_ASSERT(t1);
+    AP_DEBUG_ASSERT(t2);
+    return ((t1 < t2) ? -1 : 1);
 }
 
 static apr_thread_mutex_t *g_timer_skiplist_mtx;
@@ -1500,8 +1509,8 @@ static timer_event_t * event_get_timer_event(apr_time_t t,
     te->remove = remove;
 
     if (insert) { 
-        /* Okay, insert sorted by when.. */
-        apr_skiplist_insert(timer_skiplist, (void *)te);
+        /* Okay, add sorted by when.. */
+        apr_skiplist_insert_compare(timer_skiplist, te, indexing_add_comp);
     }
     apr_thread_mutex_unlock(g_timer_skiplist_mtx);