The Samba-Bugzilla – Attachment 630 Details for
Bug 1679
Printing problems with Samba 3.0 under Sun Solaris
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
workaround parsing bug in print change notify code
print_change_notify.patch (text/plain), 3.54 KB, created by
Gerald (Jerry) Carter (dead mail address)
on 2004-09-01 08:00:54 UTC
(
hide
)
Description:
workaround parsing bug in print change notify code
Filename:
MIME Type:
Creator:
Gerald (Jerry) Carter (dead mail address)
Created:
2004-09-01 08:00:54 UTC
Size:
3.54 KB
patch
obsolete
>Index: source/printing/notify.c >=================================================================== >--- source/printing/notify.c (revision 2132) >+++ source/printing/notify.c (working copy) >@@ -243,18 +243,21 @@ > * as they will just cause flickering updates in the client. > */ > >- if ((num_messages < 100) && (msg->type == JOB_NOTIFY_TYPE) && >- (msg->field == JOB_NOTIFY_TOTAL_BYTES || msg->field == JOB_NOTIFY_TOTAL_PAGES)) { >+ if ((num_messages < 100) && (msg->type == JOB_NOTIFY_TYPE) >+ && (msg->field == JOB_NOTIFY_TOTAL_BYTES >+ || msg->field == JOB_NOTIFY_TOTAL_PAGES )) >+ { > >- for (tmp_ptr = notify_queue_head; tmp_ptr; tmp_ptr = tmp_ptr->next) { >+ for (tmp_ptr = notify_queue_head; tmp_ptr; tmp_ptr = tmp_ptr->next) >+ { > if (tmp_ptr->msg->type == msg->type && > tmp_ptr->msg->field == msg->field && > tmp_ptr->msg->id == msg->id && > tmp_ptr->msg->flags == msg->flags && > strequal(tmp_ptr->msg->printer, msg->printer)) { > >- DEBUG(5, ("send_spoolss_notify2_msg: replacing message 0x%02x/0x%02x for printer %s \ >-in notify_queue\n", msg->type, msg->field, msg->printer)); >+ DEBUG(5,("send_spoolss_notify2_msg: replacing message 0x%02x/0x%02x for " >+ "printer %s in notify_queue\n", msg->type, msg->field, msg->printer)); > > tmp_ptr->msg = msg; > return; >Index: source/printing/printing.c >=================================================================== >--- source/printing/printing.c (revision 2132) >+++ source/printing/printing.c (working copy) >@@ -442,22 +442,30 @@ > if (!old_data) > new_job = True; > >- /* Notify the job name first */ >- >- if (new_job || !strequal(old_data->jobname, new_data->jobname)) >- notify_job_name(snum, jobid, new_data->jobname); >- > /* Job attributes that can't be changed. We only send > notification for these on a new job. */ > >+ /* ACHTUNG! Due to a bug in Samba's spoolss parsing of the >+ NOTIFY_INFO_DATA buffer, we *have* to send the job submission >+ time first or else we'll end up with potential alignment >+ errors. I don't think the systemtime should be spooled as >+ a string, but this gets us around that error. >+ --jerry (i'll feel dirty for this) */ >+ > if (new_job) { > notify_job_submitted(snum, jobid, new_data->starttime); > notify_job_username(snum, jobid, new_data->user); > } > >+ if (new_job || !strequal(old_data->jobname, new_data->jobname)) >+ notify_job_name(snum, jobid, new_data->jobname); >+ > /* Job attributes of a new job or attributes that can be > modified. */ > >+ if (new_job || !strequal(old_data->jobname, new_data->jobname)) >+ notify_job_name(snum, jobid, new_data->jobname); >+ > if (new_job || old_data->status != new_data->status) > notify_job_status(snum, jobid, map_to_spoolss_status(new_data->status)); > >@@ -575,26 +583,19 @@ > return; > > if (!pjob) { >- DEBUG(5, ("pjob_delete(): we were asked to delete nonexistent job %u\n", >+ DEBUG(5, ("pjob_delete: we were asked to delete nonexistent job %u\n", > (unsigned int)jobid)); > release_print_db(pdb); > return; > } > >- /* Send a notification that a job has been deleted */ >- >- job_status = map_to_spoolss_status(pjob->status); >- > /* We must cycle through JOB_STATUS_DELETING and > JOB_STATUS_DELETED for the port monitor to delete the job > properly. */ > >- job_status |= JOB_STATUS_DELETING; >+ job_status = JOB_STATUS_DELETING|JOB_STATUS_DELETED; > notify_job_status(snum, jobid, job_status); > >- job_status |= JOB_STATUS_DELETED; >- notify_job_status(snum, jobid, job_status); >- > /* Remove from printing.tdb */ > > tdb_delete(pdb->tdb, print_key(jobid));
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 1679
: 630 |
637