> From [EMAIL PROTECTED] Tue Apr 2 01:53:54 2002
> Date: Tue, 02 Apr 2002 10:50:07 +0200
> From: Sergij Kovalenko <[EMAIL PROTECTED]>
> To: [EMAIL PROTECTED]
> Subject: Re: LPRng: Bug: blocking in queue whith filter producing no output
>
> Patrick Powell wrote:
>
> > > From [EMAIL PROTECTED] Wed Mar 20 05:59:18 2002
> > > Date: Wed, 20 Mar 2002 14:00:27 +0100
> > > From: Sergij Kovalenko <[EMAIL PROTECTED]>
> > > To: [EMAIL PROTECTED]
> > > Subject: LPRng: Bug: blocking in queue whith filter producing no output
> > >
> > > Hello Patrick,
> > >
> > > Text files are sent in a bounce queue in which they are processed using a
>filter, then files are
> > > sent in other queue.
> > > If the filter in bounce queue produces no output, lpd tries to send this
>printing job, which
> > > includes zero length data file, to the next queue. Transmition of zero length
>data file causes
> > > blocking of this queue.
> > >
> > > 2 functions are involved in this blocking: Link_send() and Link_file_read() .
> > >
> > > Link_send()
> > > 1. transmits 0 bytes with 'ack', it seems there no actions in depth of TCP/IP.
> > > 2. waits to read 'ack'.
> > >
> > > Link_file_read():
> > > 1. waits to read 0 bytes.
> > >
> > >
> > > Thanks,
> > >
> > > Sergiy Kovalenko
> > > Firmengruppe Dr. Gueldener
> >
> > You are correct. Now the problem is:
> >
> > When a filter produces 0 bytes of output, is this an error?
> >
> > OR is it correct operation and the job should be discarded?
> >
> > OR just the file in the job should be discarded?
> >
> > I suggest treating this as a catastrophic error and abort the job with
> > a fatal (JABORT) status.
> >
>
> It would be better to treat operation as correct and just the file in the job should
>be discarded. If
> all files produces no output, is it correct operation and the job should be
>discarded.
> For example in some cases we have a job with 3 files, but only 1 file produces
>output. Other files
> are needed by filter to process the main file.
> May be for other people it would be useful to treat the job as fatal. A
>configuration flag for
> queue/lpd could be used to distinguish different requirements.
>
Hmm... this is a bit difficult to do, especially if you have sent
the control file to the other end. Now you have some zero length files
to send. You cannot 'unsend' the control file and replace it.
You CAN abort the sending of the job.
I spent quite a while thinking about this, and plan to
implement the following:
a) :lpd_bounce flag set
This causes all filter output to be concatenated to a single file.
If the output file is 0 length, terminate operation with
a JABORT.
b) :lpd_bounce flag not set
Individual files are processed. If any one of them is zero length,
terminate operation with a JABORT.
This appears to be in agreement with your suggestions.
Patrick
Patrick Powell Astart Technologies,
[EMAIL PROTECTED] 9475 Chesapeake Drive, Suite D,
Network and System San Diego, CA 92123
Consulting 858-874-6543 FAX 858-279-8424
LPRng - Print Spooler (http://www.lprng.com)
-----------------------------------------------------------------------------
YOU MUST BE A LIST MEMBER IN ORDER TO POST TO THE LPRNG MAILING LIST
The address you post from MUST be your subscription address
If you need help, send email to [EMAIL PROTECTED] (or lprng-requests
or lprng-digest-requests) with the word 'help' in the body. For the impatient,
to subscribe to a list with name LIST, send mail to [EMAIL PROTECTED]
with: | example:
subscribe LIST <mailaddr> | subscribe lprng-digest [EMAIL PROTECTED]
unsubscribe LIST <mailaddr> | unsubscribe lprng [EMAIL PROTECTED]
If you have major problems, send email to [EMAIL PROTECTED] with the word
LPRNGLIST in the SUBJECT line.
-----------------------------------------------------------------------------