From: Stefan Metzmacher Date: Mon, 19 Aug 2019 13:21:50 +0000 (+0200) Subject: s3:blocking: do the timeout calculation before calling dbwrap_watched_watch_send() X-Git-Tag: talloc-2.3.1~952 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=997548a5f1a14d82f1e80cce6d9ee55e85b5107c;p=thirdparty%2Fsamba.git s3:blocking: do the timeout calculation before calling dbwrap_watched_watch_send() This makes the next commits easier to understand. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14113 Signed-off-by: Stefan Metzmacher Reviewed-by: Volker Lendecke --- diff --git a/source3/smbd/blocking.c b/source3/smbd/blocking.c index 98074c0c09a..ac90f8c3ef1 100644 --- a/source3/smbd/blocking.c +++ b/source3/smbd/blocking.c @@ -308,14 +308,6 @@ struct tevent_req *smbd_smb1_do_locks_send( } state->deny_status = NT_STATUS_FILE_LOCK_CONFLICT; - subreq = dbwrap_watched_watch_send( - state, state->ev, lck->data->record, blocking_pid); - if (tevent_req_nomem(subreq, req)) { - goto done; - } - TALLOC_FREE(lck); - tevent_req_set_callback(subreq, smbd_smb1_do_locks_retry, req); - endtime = state->endtime; if (blocking_smblctx == UINT64_MAX) { @@ -330,6 +322,14 @@ struct tevent_req *smbd_smb1_do_locks_send( endtime = timeval_min(&endtime, &tmp); } + subreq = dbwrap_watched_watch_send( + state, state->ev, lck->data->record, blocking_pid); + if (tevent_req_nomem(subreq, req)) { + goto done; + } + TALLOC_FREE(lck); + tevent_req_set_callback(subreq, smbd_smb1_do_locks_retry, req); + ok = tevent_req_set_endtime(subreq, state->ev, endtime); if (!ok) { tevent_req_oom(req); @@ -450,14 +450,6 @@ static void smbd_smb1_do_locks_try(struct tevent_req *req) } state->deny_status = NT_STATUS_FILE_LOCK_CONFLICT; - subreq = dbwrap_watched_watch_send( - state, state->ev, lck->data->record, blocking_pid); - if (tevent_req_nomem(subreq, req)) { - goto done; - } - TALLOC_FREE(lck); - tevent_req_set_callback(subreq, smbd_smb1_do_locks_retry, req); - endtime = state->endtime; if (blocking_smblctx == UINT64_MAX) { @@ -472,6 +464,14 @@ static void smbd_smb1_do_locks_try(struct tevent_req *req) endtime = timeval_min(&endtime, &tmp); } + subreq = dbwrap_watched_watch_send( + state, state->ev, lck->data->record, blocking_pid); + if (tevent_req_nomem(subreq, req)) { + goto done; + } + TALLOC_FREE(lck); + tevent_req_set_callback(subreq, smbd_smb1_do_locks_retry, req); + ok = tevent_req_set_endtime(subreq, state->ev, endtime); if (!ok) { status = NT_STATUS_NO_MEMORY;