Strange behaviour of a $indows-Server 2003 in conjunction with cups

Ralf Schade catalysm at gmx.de
Thu Oct 28 11:31:56 PDT 2010


Hi all.
At first a short description of our system:
Two CUPS-Servers with CUPS 1.3.11 (build by rpmbuild -ta from official 
source), OS is RHEL5 with latest patches.
Both CUPS share the printers.conf and workdirectories on a SAN.
Each CUPS has its own cupsd.conf (load balancing with haproxy)


We have 4 input queues which distributes incoming prints to hundreds of 
printers in europe ;-)
Each input queue has its own filter to spread the incoming prints to the 
printers (doing a little conversion and such things *fg*)
Each defined printer has a postscript ppd (nothing special, its 
raw-printing to the own printserver).

The whole way from:
1. Doing magic things in our application
2. Print to a local cups-queue on our application servers
3. Redirecting the print to cups-server
4. Decide which input queue to use
5. Spread to the correct printer
6. Print it
is working but at the end is the problem:
The destination printer is an ipp-interface to a Windows Server 2003 
which works as a printserver for a couple of printers on a specified 
location. The printing is well done, but at the end of the process the 
cups-server received an error:
Unable to get job 145 attributes (Client: (404) Not Possible)! and the 
printer-queue on the cups-server stops working.
The Windows Print Server allows only anonymous access, not allowing to 
get any printer-states or status-codes.
I've heard that the Windows implemention of the ipp is very, let's say, 
buggy ;)
Here are some of the printer configs:
<Printer PR10000004>
Info PR10000004
DeviceURI ipp://fqdn-of-printserver:80/Printers/PR10000004/.printer
State Stopped
StateMessage Unable to get job 145 attributes (Client: (404) Not Possible)!
StateTime 1288288489
Accepting Yes
Shared Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy stop-printer
</Printer>

Is there ANY way to get this working without changing to much?
Anyone who've heard about this type of error?

I've looked into the source of the cups implementation of ipp (ipp.c) 
and have found an interesting detail:
       if (ipp_status > IPP_OK_CONFLICT)
       {
         if (ipp_status != IPP_SERVICE_UNAVAILABLE &&
             ipp_status != IPP_PRINTER_BUSY)
         {
           ippDelete(response);

           _cupsLangPrintf(stderr,
                           _("ERROR: Unable to get job %d attributes 
(%s)!\n"),
                           job_id, cupsLastErrorString());
           break;

A few lines earlier is the function to retrieve the supported features 
of the destination printer, but in those lines above, there is no check 
wether a feature is supported or not. Am I right here? :-)

Waiting for the flash....

Ralf




More information about the cups mailing list