You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by yl...@apache.org on 2016/09/28 20:48:30 UTC

svn commit: r1762707 - /httpd/httpd/trunk/server/mpm/event/event.c

Author: ylavic
Date: Wed Sep 28 20:48:30 2016
New Revision: 1762707

URL: http://svn.apache.org/viewvc?rev=1762707&view=rev
Log:
event: compute now() in event_get_timer_event, when necessary.

Modified:
    httpd/httpd/trunk/server/mpm/event/event.c

Modified: httpd/httpd/trunk/server/mpm/event/event.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/mpm/event/event.c?rev=1762707&r1=1762706&r2=1762707&view=diff
==============================================================================
--- httpd/httpd/trunk/server/mpm/event/event.c (original)
+++ httpd/httpd/trunk/server/mpm/event/event.c Wed Sep 28 20:48:30 2016
@@ -1495,6 +1495,8 @@ static timer_event_t * event_get_timer_e
                                              apr_array_header_t *remove)
 {
     timer_event_t *te;
+    apr_time_t now = (t < 0) ? 0 : apr_time_now();
+
     /* oh yeah, and make locking smarter/fine grained. */
 
     apr_thread_mutex_lock(g_timer_skiplist_mtx);
@@ -1511,7 +1513,7 @@ static timer_event_t * event_get_timer_e
     te->cbfunc = cbfn;
     te->baton = baton;
     te->canceled = 0;
-    te->when = t;
+    te->when = now + t;
     te->remove = remove;
 
     if (insert) { 
@@ -1528,7 +1530,7 @@ static apr_status_t event_register_timed
                                                   void *baton, 
                                                   apr_array_header_t *remove)
 {
-    event_get_timer_event(t + apr_time_now(), cbfn, baton, 1, remove);
+    event_get_timer_event(t, cbfn, baton, 1, remove);
     return APR_SUCCESS;
 }
 
@@ -1588,7 +1590,7 @@ static apr_status_t event_register_poll_
 
     if (timeout > 0) { 
         /* XXX:  This cancel timer event count fire before the pollset is updated */
-        scb->cancel_event = event_get_timer_event(timeout + apr_time_now(), tofn, baton, 1, pfds);
+        scb->cancel_event = event_get_timer_event(timeout, tofn, baton, 1, pfds);
     }
     for (i = 0; i < pfds->nelts; i++) {
         apr_pollfd_t *pfd = (apr_pollfd_t *)pfds->elts + i;