TODO: reply_outbuf_ex
authorStefan Metzmacher <metze@samba.org>
Wed, 11 Jun 2014 07:44:51 +0000 (09:44 +0200)
committerStefan Metzmacher <metze@samba.org>
Mon, 10 Feb 2020 13:50:20 +0000 (14:50 +0100)
source3/include/smb_macros.h
source3/smbd/error.c
source3/smbd/proto.h

index 266c17427e8b67190a43bd425ce148a906659f09..ceba72e33b46bc4eb8c2f3c706c5170b9f62fd1c 100644 (file)
 #define reply_nterror(req,status) reply_nt_error(req,status,__LINE__,__FILE__)
 #define reply_force_doserror(req,eclass,ecode) reply_force_dos_error(req,eclass,ecode,__LINE__,__FILE__)
 #define reply_botherror(req,status,eclass,ecode) reply_both_error(req,eclass,ecode,status,__LINE__,__FILE__)
+#define reply_outbuf_ex(req,status,eclass,ecode,words,bytes) \
+       reply_outbuf__ex(req,eclass,ecode,status,words,bytes,__LINE__,__FILE__)
 
 #if 0
 /* defined in IDL */
index 3f9ecaa2c5cc818b254e9e68f80f7c11a44062f6..3cb61251a3d00d2a86edb007219dc2e907903aab 100644 (file)
@@ -145,6 +145,20 @@ void reply_both_error(struct smb_request *req, uint8_t eclass, uint32_t ecode,
                         line, file);
 }
 
+void reply_outbuf__ex(struct smb_request *req,
+                     uint8_t eclass, uint32_t ecode, NTSTATUS status,
+                     uint8_t num_words, uint32_t num_bytes,
+                     int line, const char *file)
+{
+       TALLOC_FREE(req->outbuf);
+       reply_outbuf(req, num_words, num_bytes);
+       if (eclass == 0 && ecode == 0 && NT_STATUS_IS_OK(status)) {
+               return;
+       }
+       error_packet_set((char *)req->outbuf, eclass, ecode, status,
+                        line, file);
+}
+
 void reply_openerror(struct smb_request *req, NTSTATUS status)
 {
        if (NT_STATUS_EQUAL(status, NT_STATUS_OBJECT_NAME_COLLISION)) {
index 02a8c9873c3020fb0e5929370c83b53926cefa01..2ac53c95acf7282b858b1cb7e0164a2b303ae722 100644 (file)
@@ -317,6 +317,10 @@ void reply_force_dos_error(struct smb_request *req, uint8_t eclass, uint32_t eco
                    int line, const char *file);
 void reply_both_error(struct smb_request *req, uint8_t eclass, uint32_t ecode,
                      NTSTATUS status, int line, const char *file);
+void reply_outbuf__ex(struct smb_request *req,
+                     uint8_t eclass, uint32_t ecode, NTSTATUS status,
+                     uint8_t num_words, uint32_t num_bytes,
+                     int line, const char *file);
 void reply_openerror(struct smb_request *req, NTSTATUS status);
 
 /* The following definitions come from smbd/file_access.c  */