summaryrefslogtreecommitdiffstats
path: root/source/printing/printfsp.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2002-12-05 04:00:16 +0000
committerJeremy Allison <jra@samba.org>2002-12-05 04:00:16 +0000
commit6c23d2030ab8dddff4c849903c529f0012b94027 (patch)
treea04eb504ef720c26a9d8a7a663a1c7e1b8264ba6 /source/printing/printfsp.c
parentaa38aaf36338a2c9e708410d6b1befa6d65c93cc (diff)
downloadsamba-6c23d2030ab8dddff4c849903c529f0012b94027.tar.gz
samba-6c23d2030ab8dddff4c849903c529f0012b94027.tar.xz
samba-6c23d2030ab8dddff4c849903c529f0012b94027.zip
The element in fsp->print_job should be a RAP jobid, not a uint32 RPC
jobid. This was causing Win9x client "set name" calls to fail. Still need one cleanup fix to finish. Jeremy.
Diffstat (limited to 'source/printing/printfsp.c')
-rw-r--r--source/printing/printfsp.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/source/printing/printfsp.c b/source/printing/printfsp.c
index 8a4e7ea073b..4ae74e27ec5 100644
--- a/source/printing/printfsp.c
+++ b/source/printing/printfsp.c
@@ -52,8 +52,15 @@ files_struct *print_fsp_open(connection_struct *conn, char *fname)
return NULL;
}
+ /* Convert to RAP id. */
+ fsp->rap_print_jobid = pjobid_to_rap(SNUM(conn), jobid);
+ if (fsp->rap_print_jobid == 0) {
+ /* We need to delete the entry in the tdb here ! FIXME ! JRA */
+ file_free(fsp);
+ return NULL;
+ }
+
/* setup a full fsp */
- fsp->print_jobid = jobid;
fsp->fd = print_job_fd(SNUM(conn),jobid);
GetTimeOfDay(&fsp->open_time);
fsp->vuid = current_user.vuid;
@@ -88,6 +95,9 @@ print a file - called on closing the file
****************************************************************************/
void print_fsp_end(files_struct *fsp, BOOL normal_close)
{
+ uint32 jobid;
+ int snum;
+
if (fsp->share_mode == FILE_DELETE_ON_CLOSE) {
/*
* Truncate the job. print_job_end will take
@@ -96,9 +106,15 @@ void print_fsp_end(files_struct *fsp, BOOL normal_close)
sys_ftruncate(fsp->fd, 0);
}
- print_job_end(SNUM(fsp->conn),fsp->print_jobid, normal_close);
-
if (fsp->fsp_name) {
string_free(&fsp->fsp_name);
}
+
+ if (!rap_to_pjobid(fsp->rap_print_jobid, &snum, &jobid)) {
+ DEBUG(3,("print_fsp_end: Unable to convert RAP jobid %u to print jobid.\n",
+ (unsigned int)fsp->rap_print_jobid ));
+ return;
+ }
+
+ print_job_end(SNUM(fsp->conn),jobid, normal_close);
}