[cups-devel] IPP backend bug

Johannes Meixner jsmeix at suse.de
Mon Sep 7 06:25:51 PDT 2015


Hello Michael

On Oct 27 09:48 Michael Sweet wrote (excerpt):
> If you are using printer sharing (and thus are using
> the IPP backend to send the print job to the server),
> you MUST NOT use the Gutenprint driver on the client
> system, otherwise you will have problems like this.

I am a bit puzzled by your comment.

I think it should work to run the filtering (including
the printer driver) on the client system and then use
the IPP backend to send printer-specific data to the
final recipient (either a queue or a printer device).

I tried both ways without and with filtering on the client
with CUPS 2.0.3 and for me it seems to "just work"
(I have "FileDevice Yes" in cups-files.conf).

First without filtering on the client "totestyviaipp"
(but with filtering on the server "testy"):
-------------------------------------------------------------
# lpadmin -p testy -v file:/tmp/testy.out \
  -m Postscript.ppd.gz -E

# lpadmin -p totestyviaipp \
  -v ipp://localhost/printers/testy -E

# echo hello | lp -d totestyviaipp
request id is totestyviaipp-1 (0 file(s))

# egrep 'PID|File of type|Queued on' /var/log/cups/error_log
...
I [Job 1] Queued on "totestyviaipp" by "root".
I [Job 1] File of type text/plain queued by "root".
I [Job 1] Started backend /usr/lib/cups/backend/ipp (PID 1610)
I [Job 2] Queued on "testy" by "root".
I [Job 2] File of type text/plain queued by "root".
I [Job 2] Started filter /usr/lib/cups/filter/gziptoany (PID 1612)
I [Job 2] Started filter /usr/lib/cups/filter/texttopdf (PID 1613)
I [Job 2] Started filter /usr/lib/cups/filter/pdftopdf (PID 1614)
I [Job 2] Started filter /usr/lib/cups/filter/pdftops (PID 1615)
D [Job 2] PID 1612 (/usr/lib/cups/filter/gziptoany) exited with no errors.
D [Job 2] PID 1613 (/usr/lib/cups/filter/texttopdf) exited with no errors.
D [Job 2] Started filter pdftops (PID 1616)
D [Job 2] Started filter pstops (PID 1617)
D [Job 2] PID 1614 (/usr/lib/cups/filter/pdftopdf) exited with no errors.
D [Job 2] PID 1617 (pstops) exited with no errors.
D [Job 2] PID 1616 (pdftops) exited with no errors.
D [Job 2] PID 1615 (/usr/lib/cups/filter/pdftops) exited with no errors.
D [Job 1] PID 1610 (/usr/lib/cups/backend/ipp) exited with no errors.
...
-------------------------------------------------------------
No filtering can happens on "totestyviaipp" (because
the "totestyviaipp" queue is set up without it) so that
the filtering happens for the "testy" queue.

Then with filtering on the client "totestyviaipp"
(and still with filtering on the server "testy"):
-------------------------------------------------------------
# lpadmin -p totestyviaipp \
  -v ipp://localhost/printers/testy
  -m Postscript.ppd.gz -E

# echo hello2 | lp -d totestyviaipp
request id is totestyviaipp-3 (0 file(s))

# egrep 'PID|File of type|Queued on' /var/log/cups/error_log
...
I [Job 3] Queued on "totestyviaipp" by "root".
I [Job 3] File of type text/plain queued by "root".
I [Job 3] Started filter /usr/lib/cups/filter/texttopdf (PID 1660)
I [Job 3] Started filter /usr/lib/cups/filter/pdftopdf (PID 1661)
I [Job 3] Started filter /usr/lib/cups/filter/pdftops (PID 1662)
I [Job 3] Started backend /usr/lib/cups/backend/ipp (PID 1663)
D [Job 3] PID 1660 (/usr/lib/cups/filter/texttopdf) exited with no errors.
D [Job 3] Started filter pdftops (PID 1664)
D [Job 3] Started filter pstops (PID 1665)
D [Job 3] PID 1661 (/usr/lib/cups/filter/pdftopdf) exited with no errors.
D [Job 3] PID 1665 (pstops) exited with no errors.
D [Job 3] PID 1664 (pdftops) exited with no errors.
D [Job 3] PID 1662 (/usr/lib/cups/filter/pdftops) exited with no errors.
I [Job 4] Queued on "testy" by "root".
I [Job 4] File of type application/vnd.cups-postscript queued by "root".
I [Job 4] Started filter /usr/lib/cups/filter/gziptoany (PID 1667)
D [Job 4] PID 1667 (/usr/lib/cups/filter/gziptoany) exited with no errors.
D [Job 3] PID 1663 (/usr/lib/cups/backend/ipp) exited with no errors.
...
-------------------------------------------------------------
Now filtering happens on "totestyviaipp" (because
the "totestyviaipp" queue is now set up with filtering)
but no duplicated filtering happens for "testy" because the
print job is submitted as "application/vnd.cups-postscript"
file type to the "testy" queue.


Kind Regards
Johannes Meixner
-- 
SUSE LINUX GmbH - GF: Felix Imendoerffer, Jane Smithard,
Graham Norton - HRB 21284 (AG Nuernberg)




More information about the cups mailing list