diff options
author | Gerald Carter <jerry@samba.org> | 2002-12-04 01:15:50 +0000 |
---|---|---|
committer | Gerald Carter <jerry@samba.org> | 2002-12-04 01:15:50 +0000 |
commit | 9424a3b1d1bf11bf38e2bdfd20f1537cf97400ca (patch) | |
tree | 23049325eb5166290e2409078519032da6f1e24a /source | |
parent | c3877cfb9c9f3f9f86e32169cbb69c3c5bb2e3db (diff) | |
download | samba-9424a3b1d1bf11bf38e2bdfd20f1537cf97400ca.tar.gz samba-9424a3b1d1bf11bf38e2bdfd20f1537cf97400ca.tar.xz samba-9424a3b1d1bf11bf38e2bdfd20f1537cf97400ca.zip |
[merge from app_head]
XP sends GetPrinterData("ChangeId"). So we now respond accordingly.
Possible fix for CR 1147.
Diffstat (limited to 'source')
-rw-r--r-- | source/rpc_server/srv_spoolss_nt.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/source/rpc_server/srv_spoolss_nt.c b/source/rpc_server/srv_spoolss_nt.c index ad55ea6a49f..9e4b31813f9 100644 --- a/source/rpc_server/srv_spoolss_nt.c +++ b/source/rpc_server/srv_spoolss_nt.c @@ -2292,8 +2292,21 @@ WERROR _spoolss_getprinterdata(pipes_struct *p, SPOOL_Q_GETPRINTERDATA *q_u, SPO status = get_a_printer(&printer, 2, lp_servicename(snum)); if ( !W_ERROR_IS_OK(status) ) goto done; - - status = get_printer_dataex( p->mem_ctx, printer, SPOOL_PRINTERDATA_KEY, value, type, data, needed, *out_size ); + + /* XP sends this and wants to change id value from the PRINTER_INFO_0 */ + + if ( strequal(value, "ChangeId") ) { + *type = REG_DWORD; + *needed = sizeof(uint32); + if ( (*data = (uint8*)talloc(p->mem_ctx, sizeof(uint32))) == NULL) { + status = WERR_NOMEM; + goto done; + } + **data = printer->info_2->changeid; + status = WERR_OK; + } + else + status = get_printer_dataex( p->mem_ctx, printer, SPOOL_PRINTERDATA_KEY, value, type, data, needed, *out_size ); } if (*needed > *out_size) |