summaryrefslogtreecommitdiff
path: root/source3/rpc_server/srv_spoolss_nt.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/rpc_server/srv_spoolss_nt.c')
-rw-r--r--source3/rpc_server/srv_spoolss_nt.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c
index b118b7c933..b9266c7ee1 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -2999,6 +2999,7 @@ static uint32 control_printer(POLICY_HND *handle, uint32 command,
{
struct current_user user;
int snum;
+ int errcode = 0;
Printer_entry *Printer = find_printer_index_by_hnd(handle);
if (p->ntlmssp_auth_validated) {
@@ -3018,27 +3019,39 @@ static uint32 control_printer(POLICY_HND *handle, uint32 command,
switch (command) {
case PRINTER_CONTROL_PAUSE:
- if (print_queue_pause(&user, snum)) {
+ if (print_queue_pause(&user, snum, &errcode)) {
return 0;
}
break;
case PRINTER_CONTROL_RESUME:
case PRINTER_CONTROL_UNPAUSE:
- if (print_queue_resume(&user, snum)) {
+ if (print_queue_resume(&user, snum, &errcode)) {
return 0;
}
break;
case PRINTER_CONTROL_PURGE:
- if (print_queue_purge(&user, snum)) {
+ if (print_queue_purge(&user, snum, &errcode)) {
return 0;
}
break;
}
+ if (errcode)
+ return (uint32)errcode;
+
return ERROR_INVALID_FUNCTION;
}
/********************************************************************
+ * api_spoolss_abortprinter
+ ********************************************************************/
+
+uint32 _spoolss_abortprinter(POLICY_HND *handle, pipes_struct *p)
+{
+ return control_printer(handle, PRINTER_CONTROL_PURGE, p);
+}
+
+/********************************************************************
* called by spoolss_api_setprinter
* when updating a printer description
********************************************************************/