diff options
| -rw-r--r-- | server/providers/ldap/sdap_async.c | 13 | 
1 files changed, 11 insertions, 2 deletions
diff --git a/server/providers/ldap/sdap_async.c b/server/providers/ldap/sdap_async.c index 6ab88679..16511748 100644 --- a/server/providers/ldap/sdap_async.c +++ b/server/providers/ldap/sdap_async.c @@ -298,7 +298,7 @@ static void sdap_process_message(struct tevent_context *ev,  static void sdap_unlock_next_reply(struct sdap_op *op)  { -    struct timeval no_timeout = {0, 0}; +    struct timeval tv;      struct tevent_timer *te;      struct sdap_msg *next_reply; @@ -311,7 +311,16 @@ static void sdap_unlock_next_reply(struct sdap_op *op)      /* if there are still replies to parse, queue a new operation */      if (op->list) { -        te = tevent_add_timer(op->ev, op, no_timeout, +        /* use a very small timeout, so that fd operations have a chance to be +         * served while processing a long reply */ +        tv = tevent_timeval_current(); + +        /* wait 5 microsecond */ +        tv.tv_usec += 5; +        tv.tv_sec += tv.tv_usec / 1000000; +        tv.tv_usec = tv.tv_usec % 1000000; + +        te = tevent_add_timer(op->ev, op, tv,                                sdap_process_next_reply, op);          if (!te) {              DEBUG(1, ("Failed to add critical timer for next reply!\n"));  | 
