- LDAP_STAILQ_REMOVE_HEAD( &rq->run_list, next );
- if ( LDAP_STAILQ_EMPTY( &rq->run_list )) {
- LDAP_STAILQ_INSERT_HEAD( &rq->run_list, entry, next );
- } else {
- prev = entry;
- LDAP_STAILQ_FOREACH( e, &rq->run_list, next ) {
- if ( e->next_sched.tv_sec > entry->next_sched.tv_sec ) {
- if ( prev == entry ) {
- LDAP_STAILQ_INSERT_HEAD( &rq->run_list, entry, next );
- } else {
- LDAP_STAILQ_INSERT_AFTER( &rq->run_list, prev, entry, next );
- }
+ } else {
+ entry->next_sched.tv_sec = 0;
+ }
+
+ if ( LDAP_STAILQ_EMPTY( &rq->task_list )) {
+ LDAP_STAILQ_INSERT_HEAD( &rq->task_list, entry, tnext );
+ } else if ( entry->next_sched.tv_sec == 0 ) {
+ LDAP_STAILQ_INSERT_TAIL( &rq->task_list, entry, tnext );
+ } else {
+ prev = NULL;
+ LDAP_STAILQ_FOREACH( e, &rq->task_list, tnext ) {
+ if ( e->next_sched.tv_sec == 0 ) {
+ if ( prev == NULL ) {
+ LDAP_STAILQ_INSERT_HEAD( &rq->task_list, entry, tnext );
+ } else {
+ LDAP_STAILQ_INSERT_AFTER( &rq->task_list, prev, entry, tnext );
+ }
+ return;
+ } else if ( e->next_sched.tv_sec > entry->next_sched.tv_sec ) {
+ if ( prev == NULL ) {
+ LDAP_STAILQ_INSERT_HEAD( &rq->task_list, entry, tnext );
+ } else {
+ LDAP_STAILQ_INSERT_AFTER( &rq->task_list, prev, entry, tnext );