TODO: reply_outbuf_ex
authorStefan Metzmacher <metze@samba.org>
Wed, 11 Jun 2014 07:44:51 +0000 (09:44 +0200)
committerMichael Adam <obnox@samba.org>
Fri, 15 May 2015 09:46:58 +0000 (11:46 +0200)
source3/include/smb_macros.h
source3/smbd/error.c
source3/smbd/proto.h

index 42a97569e253ed5011c860443dc4bc9cc4b09aba..4efbf66b106b3cd13352826ee67758467f1c22f5 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 c91f5b0daf4e3ea69f00de115387b99f6370d81d..d31d21a0f316d1bf28ec68bdedaa6dbfff1f2cb2 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 531b58dc0a6bbff0c520037173a09d3fd839c643..cd13e543211de9ae0f78a100e256423de59573ec 100644 (file)
@@ -287,6 +287,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  */