First part of fix for bug 8310 - toupper_ascii() is broken on big-endian systems
[ira/wip.git] / source3 / smbd / smb2_flush.c
index 1d3ae2eb06b3484e4ee85e277bf03844be1afff0..c3f5a301290d24348d1cb2f390a7b3f32a03e7a2 100644 (file)
 */
 
 #include "includes.h"
+#include "smbd/smbd.h"
 #include "smbd/globals.h"
-#include "../source4/libcli/smb2/smb2_constants.h"
+#include "../libcli/smb/smb_common.h"
+#include "../lib/util/tevent_ntstatus.h"
 
 static struct tevent_req *smbd_smb2_flush_send(TALLOC_CTX *mem_ctx,
                                               struct tevent_context *ev,
@@ -57,12 +59,12 @@ NTSTATUS smbd_smb2_request_process_flush(struct smbd_smb2_request *req)
 
        if (req->compat_chain_fsp) {
                /* skip check */
-       } else if (in_file_id_persistent != 0) {
+       } else if (in_file_id_persistent != in_file_id_volatile) {
                return smbd_smb2_request_error(req, NT_STATUS_FILE_CLOSED);
        }
 
        subreq = smbd_smb2_flush_send(req,
-                                     req->conn->smb2.event_ctx,
+                                     req->sconn->smb2.event_ctx,
                                      req,
                                      in_file_id_volatile);
        if (subreq == NULL) {
@@ -70,11 +72,7 @@ NTSTATUS smbd_smb2_request_process_flush(struct smbd_smb2_request *req)
        }
        tevent_req_set_callback(subreq, smbd_smb2_request_flush_done, req);
 
-       if (tevent_req_is_in_progress(subreq)) {
-               return smbd_smb2_request_pending_queue(req);
-       }
-
-       return NT_STATUS_OK;
+       return smbd_smb2_request_pending_queue(req, subreq);
 }
 
 static void smbd_smb2_request_flush_done(struct tevent_req *subreq)
@@ -90,7 +88,7 @@ static void smbd_smb2_request_flush_done(struct tevent_req *subreq)
        if (!NT_STATUS_IS_OK(status)) {
                error = smbd_smb2_request_error(req, status);
                if (!NT_STATUS_IS_OK(error)) {
-                       smbd_server_connection_terminate(req->conn,
+                       smbd_server_connection_terminate(req->sconn,
                                                         nt_errstr(error));
                        return;
                }
@@ -101,7 +99,7 @@ static void smbd_smb2_request_flush_done(struct tevent_req *subreq)
        if (outbody.data == NULL) {
                error = smbd_smb2_request_error(req, NT_STATUS_NO_MEMORY);
                if (!NT_STATUS_IS_OK(error)) {
-                       smbd_server_connection_terminate(req->conn,
+                       smbd_server_connection_terminate(req->sconn,
                                                         nt_errstr(error));
                        return;
                }
@@ -113,7 +111,7 @@ static void smbd_smb2_request_flush_done(struct tevent_req *subreq)
 
        error = smbd_smb2_request_done(req, outbody, NULL);
        if (!NT_STATUS_IS_OK(error)) {
-               smbd_server_connection_terminate(req->conn,
+               smbd_server_connection_terminate(req->sconn,
                                                 nt_errstr(error));
                return;
        }