smbd: First watch, then defer
authorVolker Lendecke <vl@samba.org>
Fri, 20 Jun 2014 14:15:19 +0000 (14:15 +0000)
committerVolker Lendecke <vl@samba.org>
Sat, 21 Jun 2014 18:38:11 +0000 (20:38 +0200)
We exit if any of these if-statement fails, so a simple swap should not
make a difference.

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/smbd/open.c

index c0f4dea3ac986ca0d5961ffa45460cb5198aa30b..9cbc046760fb3b70e4769e07edb615f0c7f7b56a 100644 (file)
@@ -1580,11 +1580,6 @@ static void defer_open(struct share_mode_lock *lck,
 
        *open_rec = *state;
 
-       if (!push_deferred_open_message_smb(req, request_time, timeout,
-                                           state->id, open_rec)) {
-               TALLOC_FREE(lck);
-               exit_server("push_deferred_open_message_smb failed");
-       }
        if (lck) {
                struct defer_open_state *watch_state;
                struct tevent_req *watch_req;
@@ -1614,6 +1609,12 @@ static void defer_open(struct share_mode_lock *lck,
                        timeval_sum(&request_time, &timeout));
                SMB_ASSERT(ret);
        }
+
+       if (!push_deferred_open_message_smb(req, request_time, timeout,
+                                           state->id, open_rec)) {
+               TALLOC_FREE(lck);
+               exit_server("push_deferred_open_message_smb failed");
+       }
 }
 
 static void defer_open_done(struct tevent_req *req)