diff options
-rw-r--r-- | source/include/proto.h | 4 | ||||
-rw-r--r-- | source/include/smb_macros.h | 6 | ||||
-rw-r--r-- | source/smbd/error.c | 14 | ||||
-rw-r--r-- | source/smbd/trans2.c | 3 |
4 files changed, 14 insertions, 13 deletions
diff --git a/source/include/proto.h b/source/include/proto.h index e05b196e93c..db8cb1f073c 100644 --- a/source/include/proto.h +++ b/source/include/proto.h @@ -4040,8 +4040,8 @@ BOOL set_filetime(connection_struct *conn, char *fname, time_t mtime); /*The following definitions come from smbd/error.c */ -int unix_error_packet(char *outbuf,int def_class,uint32 def_code,int line); -int error_packet(char *outbuf,uint32 nt_err, int error_class,uint32 error_code,int line); +int unix_error_packet(char *outbuf,int def_class,uint32 def_code,int line, const char *file); +int error_packet(char *outbuf,uint32 nt_err, int error_class,uint32 error_code,int line, const char *file); /*The following definitions come from smbd/fileio.c */ diff --git a/source/include/smb_macros.h b/source/include/smb_macros.h index 4bdb9770301..630f1dc2aa3 100644 --- a/source/include/smb_macros.h +++ b/source/include/smb_macros.h @@ -135,11 +135,11 @@ /* these are the datagram types */ #define DGRAM_DIRECT_UNIQUE 0x10 -#define ERROR(class,x) error_packet(outbuf,0,class,x,__LINE__) -#define ERROR_BOTH(nterr,class,x) error_packet(outbuf,nterr,class,x,__LINE__) +#define ERROR(class,x) error_packet(outbuf,0,class,x,__LINE__,__FILE__) +#define ERROR_BOTH(nterr,class,x) error_packet(outbuf,nterr,class,x,__LINE__,__FILE__) /* this is how errors are generated */ -#define UNIXERROR(defclass,deferror) unix_error_packet(outbuf,defclass,deferror,__LINE__) +#define UNIXERROR(defclass,deferror) unix_error_packet(outbuf,defclass,deferror,__LINE__,__FILE__) #define SMB_ROUNDUP(x,g) (((x)+((g)-1))&~((g)-1)) diff --git a/source/smbd/error.c b/source/smbd/error.c index 16e03792ca1..164f4e42a56 100644 --- a/source/smbd/error.c +++ b/source/smbd/error.c @@ -61,7 +61,7 @@ struct { Create an error packet from errno. ****************************************************************************/ -int unix_error_packet(char *outbuf,int def_class,uint32 def_code,int line) +int unix_error_packet(char *outbuf,int def_class,uint32 def_code,int line, const char *file) { int eclass=def_class; int ecode=def_code; @@ -83,14 +83,14 @@ int unix_error_packet(char *outbuf,int def_class,uint32 def_code,int line) } } - return(error_packet(outbuf,0,eclass,ecode,line)); + return(error_packet(outbuf,0,eclass,ecode,line,file)); } /**************************************************************************** Create an error packet. Normally called using the ERROR() macro. ****************************************************************************/ -int error_packet(char *outbuf,uint32 nt_err, int error_class,uint32 error_code,int line) +int error_packet(char *outbuf,uint32 nt_err, int error_class,uint32 error_code,int line, const char *file) { int outsize = set_message(outbuf,0,0,True); int cmd = CVAL(outbuf,smb_com); @@ -102,14 +102,14 @@ int error_packet(char *outbuf,uint32 nt_err, int error_class,uint32 error_code,i SSVAL(outbuf, smb_flg2, SVAL(outbuf, smb_flg2) | FLAGS2_32_BIT_ERROR_CODES); SIVAL(outbuf,smb_rcls,nt_err); - DEBUG( 3, ( "32 bit error packet at line %d cmd=%d (%s) eclass=%08x [%s]\n", - line, cmd, smb_fn_name(cmd), nt_err, smb_errstr(outbuf) ) ); + DEBUG( 3, ( "32 bit error packet at %s(%d) cmd=%d (%s) eclass=%08x [%s]\n", + file, line, cmd, smb_fn_name(cmd), nt_err, smb_errstr(outbuf) ) ); } else { CVAL(outbuf,smb_rcls) = error_class; SSVAL(outbuf,smb_err,error_code); - DEBUG( 3, ( "error packet at line %d cmd=%d (%s) eclass=%d ecode=%d\n", - line, cmd, smb_fn_name(cmd), error_class, error_code ) ); + DEBUG( 3, ( "error packet at %s(%d) cmd=%d (%s) eclass=%d ecode=%d\n", + file, line, cmd, smb_fn_name(cmd), error_class, error_code ) ); } return(outsize); diff --git a/source/smbd/trans2.c b/source/smbd/trans2.c index fc4ffa062c2..fb92e48ab68 100644 --- a/source/smbd/trans2.c +++ b/source/smbd/trans2.c @@ -1771,7 +1771,8 @@ static int call_trans2setfilepathinfo(connection_struct *conn, /* * Doing a DELETE_ON_CLOSE should cancel a print job. */ - if ((info_level == SMB_SET_FILE_DISPOSITION_INFO) && CVAL(pdata,0)) { + if (((info_level == SMB_SET_FILE_DISPOSITION_INFO)||(info_level == SMB_FILE_DISPOSITION_INFORMATION)) && + CVAL(pdata,0)) { fsp->share_mode = FILE_DELETE_ON_CLOSE; DEBUG(3,("call_trans2setfilepathinfo: Cancelling print job (%s)\n", |