mirror of
https://github.com/samba-team/samba.git
synced 2025-01-12 09:18:10 +03:00
lib/messages.c: Check return from chainlock before modifying message queue.
Apply the job returned limit across all requests for job queues. Jeremy.
This commit is contained in:
parent
55681422e9
commit
bf795b684e
@ -315,7 +315,9 @@ static BOOL retrieve_all_messages(char **msgs_buf, size_t *total_len)
|
||||
|
||||
kbuf = message_key_pid(sys_getpid());
|
||||
|
||||
tdb_chainlock(tdb, kbuf);
|
||||
if (tdb_chainlock(tdb, kbuf) == -1)
|
||||
return False;
|
||||
|
||||
dbuf = tdb_fetch(tdb, kbuf);
|
||||
/*
|
||||
* Replace with an empty record to keep the allocated
|
||||
|
@ -1959,6 +1959,7 @@ int print_queue_status(int snum,
|
||||
TDB_DATA data, key;
|
||||
const char *printername;
|
||||
struct tdb_print_db *pdb;
|
||||
int max_reported_jobs = lp_max_reported_jobs(snum);
|
||||
|
||||
/* make sure the database is up to date */
|
||||
|
||||
@ -2033,6 +2034,10 @@ int print_queue_status(int snum,
|
||||
QSORT_CAST(printjob_comp));
|
||||
|
||||
*queue = tstruct.queue;
|
||||
|
||||
if (max_reported_jobs && tstruct.qcount > max_reported_jobs)
|
||||
tstruct.qcount = max_reported_jobs;
|
||||
|
||||
return tstruct.qcount;
|
||||
}
|
||||
|
||||
|
@ -6353,7 +6353,6 @@ WERROR _spoolss_enumjobs( pipes_struct *p, SPOOL_Q_ENUMJOBS *q_u, SPOOL_R_ENUMJO
|
||||
int snum;
|
||||
print_status_struct prt_status;
|
||||
print_queue_struct *queue=NULL;
|
||||
int max_rep_jobs;
|
||||
|
||||
/* that's an [in out] buffer */
|
||||
spoolss_move_buffer(q_u->buffer, &r_u->buffer);
|
||||
@ -6367,8 +6366,6 @@ WERROR _spoolss_enumjobs( pipes_struct *p, SPOOL_Q_ENUMJOBS *q_u, SPOOL_R_ENUMJO
|
||||
if (!get_printer_snum(p, handle, &snum))
|
||||
return WERR_BADFID;
|
||||
|
||||
max_rep_jobs = lp_max_reported_jobs(snum);
|
||||
|
||||
*returned = print_queue_status(snum, &queue, &prt_status);
|
||||
DEBUGADD(4,("count:[%d], status:[%d], [%s]\n", *returned, prt_status.status, prt_status.message));
|
||||
|
||||
@ -6377,9 +6374,6 @@ WERROR _spoolss_enumjobs( pipes_struct *p, SPOOL_Q_ENUMJOBS *q_u, SPOOL_R_ENUMJO
|
||||
return WERR_OK;
|
||||
}
|
||||
|
||||
if (max_rep_jobs && (*returned > max_rep_jobs))
|
||||
*returned = max_rep_jobs;
|
||||
|
||||
switch (level) {
|
||||
case 1:
|
||||
return enumjobs_level1(queue, snum, buffer, offered, needed, returned);
|
||||
|
Loading…
Reference in New Issue
Block a user