Bug 2557 - printer status stays as offline on win xp pro clients for "local printer"
printer status stays as offline on win xp pro clients for "local printer"
Status: CLOSED FIXED
Product: Samba 3.0
Classification: Unclassified
Component: Printing
3.0.13
x86 Windows XP
: P3 normal
: none
Assigned To: Gerald (Jerry) Carter
Samba QA Contact
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2005-03-30 02:49 UTC by Urs Rau
Modified: 2005-08-24 10:15 UTC (History)
0 users

See Also:


Attachments
log level 5 for opening the printers folder all printers are offline.log (258.52 KB, application/octet-stream)
2005-04-01 14:41 UTC, Urs Rau
no flags Details
log level 10 trying to set printer copier_pcl to "Use Online" from xp pro client (147.90 KB, application/octet-stream)
2005-04-01 14:43 UTC, Urs Rau
no flags Details
prevent rpc fault on unsupported SetPrinter() levels (697 bytes, patch)
2005-07-15 11:11 UTC, Gerald (Jerry) Carter
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Urs Rau 2005-03-30 02:49:59 UTC
On a windows 98 machine everything still works as it used to under samba-2.2 but
under a windows xp pro client the printer status shows the printer as offline.

Even though the client can print both test pages and real documents to it.

If one tries to use the "Use Printer Online" function from the printers
properties, then the windows error dialog says: "Operation could not be
completed.  Access is denied."

the smbd.log says:
[2005/03/24 13:28:23, 3] smbd/process.c:process_smb(1091)
  Transaction 237 of length 282
[2005/03/24 13:28:23, 3] smbd/process.c:switch_message(886)
  switch message SMBtrans (pid 3641) conn 0x9e53480
[2005/03/24 13:28:23, 3] smbd/ipc.c:reply_trans(539)
  trans <\PIPE\> data=194 params=0 setup=2
[2005/03/24 13:28:23, 3] smbd/ipc.c:named_pipe(334)
  named pipe command on <> name
[2005/03/24 13:28:23, 3] smbd/ipc.c:api_fd_reply(294)
  Got API command 0x26 on pipe "spoolss" (pnum 75c0)
[2005/03/24 13:28:23, 3] rpc_server/srv_pipe_hnd.c:free_pipe_context(542)
  free_pipe_context: destroying talloc pool of size 0
[2005/03/24 13:28:23, 3] rpc_server/srv_pipe.c:api_rpcTNP(1538)
  api_rpcTNP: rpc command: SPOOLSS_OPENPRINTEREX
  checking name: \\linux\copier_pcl
[2005/03/24 13:28:23, 3]
rpc_server/srv_spoolss_nt.c:set_printer_hnd_printertype(469)
  Setting printer type=\\linux\copier_pcl
[2005/03/24 13:28:23, 3] lib/util_seaccess.c:se_access_check(251)
[2005/03/24 13:28:23, 3] lib/util_seaccess.c:se_access_check(252)
  se_access_check: user sid is S-1-5-21-4228724095-3962383925-909725441-501
  se_access_check: also S-1-5-21-4228724095-3962383925-909725441-514
  se_access_check: also S-1-1-0
  se_access_check: also S-1-5-2
  se_access_check: also S-1-5-32-546
  se_access_check: also S-1-5-21-4228724095-3962383925-909725441-1199
  se_access_check: also S-1-5-21-4228724095-3962383925-909725441-1153
[2005/03/24 13:28:23, 3]
rpc_server/srv_spoolss_nt.c:_spoolss_open_printer_ex(1770)
  access DENIED for printer open
[2005/03/24 13:28:23, 3] rpc_server/srv_lsa_hnd.c:close_policy_hnd(200)
  Closed policy
[2005/03/24 13:28:23, 3] rpc_server/srv_pipe_hnd.c:free_pipe_context(542)
  free_pipe_context: destroying talloc pool of size 70

This happens for any network printer that has been setup as follows:
the printer is defined as a "local printer" and is pointing to a "local port"
named "\\sambaservername\cupsprintername"

This sort of printer setup has many advantages and is officially supported by
Microsoft. (see http://support.microsoft.com/kb/314073 &
http://support.microsoft.com/kb/260142)

Some of the advantages are:
- solves problem of slow printing with MS Word, when link to network printer is slow
- solves problem with Pegasus Mail with long delays of moving up and down the
inbox when default printer is a slow network printer
- allows admins to setup workstation printers for all users of a machine with a
default config once, no need to set the per user netowrk printer for each
possibly on each login.

On my windows xp pro clients that are joined to the domain called "WORKGROUP"
(sorry about that) and with a restricted user logged in it says printer status
offline for a printer that is defined as a local printer that is printing to a
local port that happens to be named (or points to) the samba/cups printershare.
BUT the same samba/cups printer share will show correct status if the printer is
et as a network printer pointing to the same samba/cups printershare.

So in the "Printers and Faxes" I can have two different status displayed for the
same queue, the only diff being that the one is defined as a network printer and
the other as a "local printer". BTW, if it helps, this was working fine a week
ago when I was still under 2.2.8.

Please let me know if there is anything else I can do to help get to the bottom
of this problem.

I have tried making a level 10 log of the problem but since our samba server is
never really quiet I found the resulting logfile had way too much info in it. I
had a 2.4 MB log file just for a few seconds of client time where I tried to log
what happens on the server when I try using "Use Printer Online" on such a
"offline" queue. So, if I can help by producing a level 10 log then please point
me in the right direction on how I can zero in on the specific data for one
session. ( I don't mind reading up and learning in the process )
Comment 1 Urs Rau 2005-04-01 13:38:32 UTC
OK, I played some more and now have a more focused log file that does now say
please report to samba-technical, so I guess it is a bug and hopefully this will
help towards solving it.

log level = 0 tdb:3 passdb:3 auth:3 vfs:0 idmap:3 acls:3 rpc_parse:3 rpc_srv:3 r
pc_cli:3 printdrivers:3

this is still a log of the same action, trying to set the printer to "Use
Online" from the win xp client.

[2005/04/01 21:24:13, 3] rpc_server/srv_pipe.c:api_pipe_bind_req(887)
  api_pipe_bind_req: \PIPE\spoolss -> \PIPE\spoolss
[2005/04/01 21:24:13, 3] rpc_server/srv_pipe.c:check_bind_req(762)
  check_bind_req for \PIPE\spoolss
[2005/04/01 21:24:13, 3] rpc_server/srv_pipe_hnd.c:free_pipe_context(542)
  free_pipe_context: destroying talloc pool of size 0
[2005/04/01 21:24:13, 3] rpc_server/srv_pipe.c:api_rpcTNP(1538)
  api_rpcTNP: rpc command: SPOOLSS_OPENPRINTEREX
  checking name: \\linux\copier_pcl
[2005/04/01 21:24:13, 3]
rpc_server/srv_spoolss_nt.c:set_printer_hnd_printertype(469)
  Setting printer type=\\linux\copier_pcl
[2005/04/01 21:24:13, 3] rpc_server/srv_pipe_hnd.c:free_pipe_context(542)
  free_pipe_context: destroying talloc pool of size 74
[2005/04/01 21:24:13, 3] rpc_server/srv_pipe.c:api_pipe_bind_req(887)
  api_pipe_bind_req: \PIPE\spoolss -> \PIPE\spoolss
[2005/04/01 21:24:13, 3] rpc_server/srv_pipe.c:check_bind_req(762)
  check_bind_req for \PIPE\spoolss
[2005/04/01 21:24:13, 3] rpc_server/srv_pipe_hnd.c:free_pipe_context(542)
  free_pipe_context: destroying talloc pool of size 0
[2005/04/01 21:24:13, 3] rpc_server/srv_pipe.c:api_rpcTNP(1538)
  api_rpcTNP: rpc command: SPOOLSS_GETPRINTERDATA
[2005/04/01 21:24:13, 3] rpc_server/srv_pipe_hnd.c:free_pipe_context(542)
  free_pipe_context: destroying talloc pool of size 1162
[2005/04/01 21:24:13, 3] rpc_server/srv_pipe_hnd.c:free_pipe_context(542)
  free_pipe_context: destroying talloc pool of size 0
[2005/04/01 21:24:13, 3] rpc_server/srv_pipe.c:api_rpcTNP(1538)
  api_rpcTNP: rpc command: SPOOLSS_CLOSEPRINTER
[2005/04/01 21:24:13, 3] rpc_server/srv_lsa_hnd.c:close_policy_hnd(200)
  Closed policy
[2005/04/01 21:24:13, 3] rpc_server/srv_pipe_hnd.c:free_pipe_context(542)
  free_pipe_context: destroying talloc pool of size 0
[2005/04/01 21:24:13, 3] rpc_server/srv_pipe_hnd.c:free_pipe_context(542)
  free_pipe_context: destroying talloc pool of size 0
[2005/04/01 21:24:13, 3] rpc_server/srv_pipe.c:api_rpcTNP(1538)
  api_rpcTNP: rpc command: SPOOLSS_OPENPRINTEREX
  checking name: \\linux\copier_pcl
[2005/04/01 21:24:13, 3]
rpc_server/srv_spoolss_nt.c:set_printer_hnd_printertype(469)
  Setting printer type=\\linux\copier_pcl
[2005/04/01 21:24:13, 3] rpc_server/srv_pipe_hnd.c:free_pipe_context(542)
  free_pipe_context: destroying talloc pool of size 74
[2005/04/01 21:24:13, 3] rpc_server/srv_pipe_hnd.c:free_pipe_context(542)
  free_pipe_context: destroying talloc pool of size 0
[2005/04/01 21:24:13, 3] rpc_server/srv_pipe.c:api_rpcTNP(1538)
  api_rpcTNP: rpc command: SPOOLSS_CLOSEPRINTER
[2005/04/01 21:24:13, 3] rpc_server/srv_lsa_hnd.c:close_policy_hnd(200)
  Closed policy
[2005/04/01 21:24:13, 3] rpc_server/srv_pipe_hnd.c:free_pipe_context(542)
  free_pipe_context: destroying talloc pool of size 0
[2005/04/01 21:24:18, 3] rpc_server/srv_pipe.c:api_pipe_bind_req(887)
  api_pipe_bind_req: \PIPE\spoolss -> \PIPE\spoolss
[2005/04/01 21:24:18, 3] rpc_server/srv_pipe.c:check_bind_req(762)
  check_bind_req for \PIPE\spoolss
[2005/04/01 21:24:18, 3] rpc_server/srv_pipe_hnd.c:free_pipe_context(542)
  free_pipe_context: destroying talloc pool of size 0
[2005/04/01 21:24:18, 3] rpc_server/srv_pipe.c:api_rpcTNP(1538)
  api_rpcTNP: rpc command: SPOOLSS_OPENPRINTEREX
  checking name: \\linux\copier_pcl
[2005/04/01 21:24:18, 3]
rpc_server/srv_spoolss_nt.c:set_printer_hnd_printertype(469)
  Setting printer type=\\linux\copier_pcl
[2005/04/01 21:24:18, 3] rpc_server/srv_pipe_hnd.c:free_pipe_context(542)
  free_pipe_context: destroying talloc pool of size 74
[2005/04/01 21:24:18, 3] rpc_server/srv_pipe_hnd.c:free_pipe_context(542)
  free_pipe_context: destroying talloc pool of size 0
[2005/04/01 21:24:18, 3] rpc_server/srv_pipe.c:api_rpcTNP(1538)
  api_rpcTNP: rpc command: SPOOLSS_GETPRINTERDATA
[2005/04/01 21:24:18, 3] rpc_server/srv_pipe_hnd.c:free_pipe_context(542)
  free_pipe_context: destroying talloc pool of size 1162
[2005/04/01 21:24:18, 3] rpc_server/srv_pipe_hnd.c:free_pipe_context(542)
  free_pipe_context: destroying talloc pool of size 0
[2005/04/01 21:24:18, 3] rpc_server/srv_pipe.c:api_rpcTNP(1538)
  api_rpcTNP: rpc command: SPOOLSS_SETPRINTER
[2005/04/01 21:24:18, 0] rpc_parse/parse_spoolss.c:spoolss_io_devmode(706)
  spoolss_io_devmode: Unknown specversion in devicemode [0x6c]
[2005/04/01 21:24:18, 0] rpc_parse/parse_spoolss.c:spoolss_io_devmode(707)
  spoolss_io_devmode: please report to samba-technical@samba.org!
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

[2005/04/01 21:24:18, 0] rpc_parse/parse_prs.c:prs_mem_get(537)
  prs_mem_get: reading data of size 64 would overrun buffer.
[2005/04/01 21:24:18, 0] rpc_server/srv_spoolss.c:api_spoolss_setprinter(605)
  spoolss_io_q_setprinter: unable to unmarshall SPOOL_Q_SETPRINTER.
[2005/04/01 21:24:18, 0] rpc_server/srv_pipe.c:api_rpcTNP(1560)
  api_rpcTNP: spoolss: SPOOLSS_SETPRINTER failed.
[2005/04/01 21:24:18, 3] rpc_server/srv_pipe_hnd.c:free_pipe_context(542)
  free_pipe_context: destroying talloc pool of size 236
[2005/04/01 21:24:18, 3] rpc_server/srv_pipe_hnd.c:process_complete_pdu(750)
  process_complete_pdu: DCE/RPC fault sent on pipe spoolss
[2005/04/01 21:24:18, 3] rpc_server/srv_lsa_hnd.c:close_policy_hnd(200)
  Closed policy
Comment 2 Urs Rau 2005-04-01 14:41:58 UTC
Created attachment 1131 [details]
log level 5 for opening the printers folder all printers are offline.log

this a log level 5 of opening the printers folder from the xp pro sp2 client
Comment 3 Urs Rau 2005-04-01 14:43:05 UTC
Created attachment 1132 [details]
log level 10 trying to set printer copier_pcl to "Use Online" from xp pro client

log level 10 trying to set printer copier_pcl to "Use Online" from xp pro
client
Comment 4 Gerald (Jerry) Carter 2005-07-15 11:05:40 UTC
I'm guessing its the set printer level 5 that is 
causing the problems.

  api_rpcTNP: spoolss op 0x7 - api_rpcTNP: rpc command: SPOOLSS_SETPRINTER
  api_rpc_cmds[16].fn == 0x427b20
  000000 spoolss_io_q_setprinter
      000000 smb_io_pol_hnd printer handle
      ......
      0014 level: 00000005
      ^^^^^^^^^^^^^^^^^^^^

This is causing an RPC fault.  Should just return unknown level.
Comment 5 Gerald (Jerry) Carter 2005-07-15 11:12:00 UTC
Created attachment 1313 [details]
prevent rpc fault on unsupported SetPrinter() levels
Comment 6 Gerald (Jerry) Carter 2005-07-15 11:12:25 UTC
sorry for the delay.  This patch should fix the issue with 
SetPrinter() causing and rpc fault.
Comment 7 Gerald (Jerry) Carter 2005-08-24 10:15:36 UTC
sorry for the same, cleaning up the database to prevent unecessary reopens of bugs.