summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source/include/proto.h4
-rw-r--r--source/include/smb_macros.h6
-rw-r--r--source/smbd/error.c14
-rw-r--r--source/smbd/trans2.c3
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",