Try and fix bug #7233 - print fails with jobs >4GB from Win7 clients.
authorJeremy Allison <jra@samba.org>
Thu, 11 Mar 2010 01:46:09 +0000 (17:46 -0800)
committerJeremy Allison <jra@samba.org>
Thu, 11 Mar 2010 01:46:09 +0000 (17:46 -0800)
Remove an arbitrarty 4G B limit that *doesn't need to be there* !
Jeremy.

source3/printing/printing.c
source3/rpc_server/srv_spoolss_nt.c

index 50494e37dc9ffe2f762131ed10662acdafb3d33f..e48a2d173c88996ddb26f30858583bbaca51d779 100644 (file)
@@ -2232,7 +2232,7 @@ pause, or resume print job. User name: %s. Printer name: %s.",
 ssize_t print_job_write(int snum, uint32 jobid, const char *buf, SMB_OFF_T pos, size_t size)
 {
        const char* sharename = lp_const_servicename(snum);
-       int return_code;
+       ssize_t return_code;
        struct printjob *pjob;
 
        pjob = print_job_find(sharename, jobid);
index b70376f52aa3ed62a19480892d3383cd30295350..a35c5f638280e86b44b022e67f0dda97f7019663 100644 (file)
@@ -5288,7 +5288,7 @@ WERROR _spoolss_EndDocPrinter(pipes_struct *p,
 WERROR _spoolss_WritePrinter(pipes_struct *p,
                             struct spoolss_WritePrinter *r)
 {
-       uint32_t buffer_written;
+       ssize_t buffer_written;
        int snum;
        Printer_entry *Printer = find_printer_index_by_hnd(p, r->in.handle);
 
@@ -5302,11 +5302,11 @@ WERROR _spoolss_WritePrinter(pipes_struct *p,
        if (!get_printer_snum(p, r->in.handle, &snum, NULL))
                return WERR_BADFID;
 
-       buffer_written = (uint32_t)print_job_write(snum, Printer->jobid,
+       buffer_written = print_job_write(snum, Printer->jobid,
                                                   (const char *)r->in.data.data,
                                                   (SMB_OFF_T)-1,
                                                   (size_t)r->in._data_size);
-       if (buffer_written == (uint32_t)-1) {
+       if (buffer_written == (ssize_t)-1) {
                *r->out.num_written = 0;
                if (errno == ENOSPC)
                        return WERR_NO_SPOOL_SPACE;