ldb-samba: fix the timeout setup in ildb_request_send()
authorStefan Metzmacher <metze@samba.org>
Fri, 22 Jan 2016 07:53:57 +0000 (08:53 +0100)
committerGarming Sam <garming@samba.org>
Wed, 17 Feb 2016 02:43:22 +0000 (03:43 +0100)
We need to use the startime as reference not the current time.

We also allow timeout == -1 to indicate no timeout at all.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
lib/ldb-samba/ldb_ildap.c

index 6ec363de9de1d2ba0c9909fe3848a914ed0c7b1d..65f11dba0182e8f6cfe873fbfbaf462e7bf9c1f7 100644 (file)
@@ -418,11 +418,13 @@ static int ildb_request_send(struct ildb_context *ac, struct ldap_message *msg)
                return LDB_ERR_OPERATIONS_ERROR;
        }
 
-       talloc_free(req->time_event);
-       req->time_event = NULL;
-       if (ac->req->timeout) {
-               req->time_event = tevent_add_timer(ac->ildb->event_ctx, ac,
-                                                  timeval_current_ofs(ac->req->timeout, 0),
+       TALLOC_FREE(req->time_event);
+       if (ac->req->timeout > 0) {
+               struct timeval tv = {
+                       .tv_sec = ac->req->starttime + ac->req->timeout,
+               };
+
+               req->time_event = tevent_add_timer(ac->ildb->event_ctx, ac, tv,
                                                   ildb_request_timeout, ac);
        }