]> git.sur5r.net Git - openldap/blobdiff - libraries/libldap_r/rq.c
ITS#7182 Expose the peer address of a connection.
[openldap] / libraries / libldap_r / rq.c
index adfaea5641813044aee94feccbef6055e174a885..a1b432051e48deaa9fba6109b55dabb9e3f1e081 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 2003-2005 The OpenLDAP Foundation.
+ * Copyright 2003-2012 The OpenLDAP Foundation.
  * Portions Copyright 2003 IBM Corporation.
  * All rights reserved.
  *
@@ -38,7 +38,9 @@ ldap_pvt_runqueue_insert(
        struct runqueue_s* rq,
        time_t interval,
        ldap_pvt_thread_start_t *routine,
-       void *arg
+       void *arg,
+       char *tname,
+       char *tspec
 )
 {
        struct re_s* entry;
@@ -51,7 +53,9 @@ ldap_pvt_runqueue_insert(
                entry->next_sched.tv_usec = 0;
                entry->routine = routine;
                entry->arg = arg;
-               LDAP_STAILQ_INSERT_TAIL( &rq->task_list, entry, tnext );
+               entry->tname = tname;
+               entry->tspec = tspec;
+               LDAP_STAILQ_INSERT_HEAD( &rq->task_list, entry, tnext );
        }
        return entry;
 }
@@ -95,20 +99,16 @@ ldap_pvt_runqueue_remove(
 struct re_s*
 ldap_pvt_runqueue_next_sched(
        struct runqueue_s* rq,
-       struct timeval** next_run
+       struct timeval* next_run
 )
 {
        struct re_s* entry;
 
        entry = LDAP_STAILQ_FIRST( &rq->task_list );
-       if ( entry == NULL ) {
-               *next_run = NULL;
-               return NULL;
-       } else if ( entry->next_sched.tv_sec == 0 ) {
-               *next_run = NULL;
+       if ( entry == NULL || entry->next_sched.tv_sec == 0 ) {
                return NULL;
        } else {
-               *next_run = &entry->next_sched;
+               *next_run = entry->next_sched;
                return entry;
        }
 }