r24225: Convert reply_flush to the new API
authorVolker Lendecke <vlendec@samba.org>
Sat, 4 Aug 2007 20:44:33 +0000 (20:44 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:29:18 +0000 (12:29 -0500)
(This used to be commit f843c02f0794964eba02ab983f9c0701801f415c)

source3/smbd/process.c
source3/smbd/reply.c

index 02ad205bd58d37e4fe34455d0fdd33e4b944b169..f455b39a526c0206628823a219006347b19d7407 100644 (file)
@@ -693,7 +693,7 @@ static const struct smb_message_struct {
 /* 0x02 */ { "SMBopen",reply_open,NULL,AS_USER },
 /* 0x03 */ { "SMBcreate",reply_mknew,NULL,AS_USER},
 /* 0x04 */ { "SMBclose",NULL,reply_close,AS_USER | CAN_IPC },
-/* 0x05 */ { "SMBflush",reply_flush,NULL,AS_USER},
+/* 0x05 */ { "SMBflush",NULL,reply_flush,AS_USER},
 /* 0x06 */ { "SMBunlink",NULL,reply_unlink,AS_USER | NEED_WRITE },
 /* 0x07 */ { "SMBmv",reply_mv,NULL,AS_USER | NEED_WRITE },
 /* 0x08 */ { "SMBgetatr",reply_getatr,NULL,AS_USER},
index 94f18641bf467a143a1cfbc7eb2643634584a4a0..2b54c636a590e6348dd1c8ebb45ee5ef8e916bb7 100644 (file)
@@ -3463,31 +3463,43 @@ int reply_lseek(connection_struct *conn, char *inbuf,char *outbuf, int size, int
  Reply to a flush.
 ****************************************************************************/
 
-int reply_flush(connection_struct *conn, char *inbuf,char *outbuf, int size, int dum_buffsize)
+void reply_flush(connection_struct *conn, struct smb_request *req)
 {
-       int outsize = set_message(inbuf,outbuf,0,0,False);
-       uint16 fnum = SVAL(inbuf,smb_vwv0);
-       files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv0));
+       uint16 fnum;
+       files_struct *fsp;
+
        START_PROFILE(SMBflush);
 
-       if (fnum != 0xFFFF)
-               CHECK_FSP(fsp,conn);
+       if (req->wct < 1) {
+               reply_nterror(req, NT_STATUS_INVALID_PARAMETER);
+               return;
+       }
+
+       fnum = SVAL(req->inbuf,smb_vwv0);
+       fsp = file_fsp(fnum);
+
+       if ((fnum != 0xFFFF) && !check_fsp(conn, req, fsp, &current_user)) {
+               return;
+       }
        
        if (!fsp) {
                file_sync_all(conn);
        } else {
                NTSTATUS status = sync_file(conn, fsp, True);
                if (!NT_STATUS_IS_OK(status)) {
-                       END_PROFILE(SMBflush);
                        DEBUG(5,("reply_flush: sync_file for %s returned %s\n",
                                fsp->fsp_name, nt_errstr(status) ));
-                       return ERROR_NT(status);
+                       reply_nterror(req, status);
+                       END_PROFILE(SMBflush);
+                       return;
                }
        }
        
+       reply_outbuf(req, 0, 0);
+
        DEBUG(3,("flush\n"));
        END_PROFILE(SMBflush);
-       return(outsize);
+       return;
 }
 
 /****************************************************************************