OpenPrinting / libcups

OpenPrinting CUPS Library Sources
https://openprinting.github.io/cups/cups3.html
Apache License 2.0
28 stars 15 forks source link

ippserver: Get-Printer-Attributes finishings-supported always return enum none and other enums are not shown #17

Closed maniper closed 1 year ago

maniper commented 2 years ago

Hello Michael,

I am using ippserver as basic infrastructure server between standard IPP Client (ipptool) and IPP proxy (ippproxy). $ ippserver -v -C ../sample-conf $ ippproxy -v -d ipp://<output device ip address>:631/printers/lp ipp://<ippserver ipaddress>:8000/ipp/print/infra ippproxy is connected to some output printer device and when sending print-job from ipptool to ippserver, ippproxy can successfully fetch the job from ippserver and forwarded it to the connected output printer device, and printing is proceeded successfully.

Now I am trying to check the printer capabilities by sending get-printer-attributes (get-printer-attributes.test) to ippserver and check if what finishing enums are supported. However, I always get the following result: image

But I'm expecting the following result, because when I send get-printer-attributes directly to the connected output printer device (note this device is connected to ippproxy), I see that more finishing enums are supported. image

As I understand, ippserver printer capabilities should combine the output device capabilities that are provided by ippproxy. So if an IPP Client send get-printer-attributes to the ippserver, it should return the supported finishing that is provided by ippproxy or the output device connected to ippproxy.

Is my understanding wrong? Is there additional configuration/modification in ippserver/ippproxy so that other finishing enums reflect on the get-printer-attributes result response?

Any feedback would be appreciated. Thank you.

wifiprintguy commented 2 years ago

The ippproxy registers its Output Device with the Infrastructure Printer via the Update-Output-Device-Attributes operation (PWG 5100.18 section 5.10). In that operation, the ippproxy should be pushing all of the Output Device's IPP attributes. Are all the finishings enums you list above included in that Update-Output-Device-Attributes operation to ippserver?

maniper commented 2 years ago

Thank you very much for the feedback!

Yes, all the finishing enums listed above is already included in Update-Output-Device-Attributes as can be seen below: image

And when send Get-Printer-Attributes, still it does not include the other finishing enums: image

Also I have to modified the code of ippproxy to add finishing-supported in printer_attrs structure because in current ipproxy.c source code it's not added. image

michaelrsweet commented 1 year ago

Not sure why this was filed against libcups instead of ippsample, but that's where this bug needs to live.

FWIW, I am in the process of fixing the current IPP INFRA prototype and adding it to the test suite (using ippproxy to relay jobs to a local ippeveprinter instance).