attachment-0001
<!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML//EN">
<HTML>
<HEAD>
<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
<META content='"MSHTML 4.72.3110.7"' name=GENERATOR>
</HEAD>
<BODY bgColor=#ffffff
style="FONT: 10pt Arial; MARGIN-LEFT: 2px; MARGIN-TOP: 2px">
<DIV>Tom,</DIV>
<DIV> </DIV>
<DIV>"An IPP object MUST be able to accept any of the attribute syntaxes
defined in Section 4.1, including their full range" (MOD Section
5.2.6). The "full range" for an out-of-band value is clearly
"defined in Section 4.1" as ... "clients MUST NOT supply
attributes with "out-of-band" values." There is no
discrepancy between Sections 4.1 and 5.2.6 as currently stated. In my
opinion, the "clarification" you propose goes against the initial
intent of what's currently stated in the document and should be viewed as an
interoperability breach with IPP 1.0/1.1.</DIV>
<DIV> </DIV>
<DIV>If the MOD spec is going to "mandate" that all compliant printer
implementations MUST be able to accept "out-of-band" values with zero,
one, or more values, the version number of IPP should be rev'ed up.</DIV>
<DIV> </DIV>
<DIV>-Hugo</DIV>
<DIV> </DIV>
<DIV><BR><BR>>>> "Hastings, Tom N" <<A
href="mailto:hastings@cp10.es.xerox.com">hastings@cp10.es.xerox.com</A>>
03/14/00 12:56PM >>><BR>URGENT INTEROPERABILITY PROBLEM/ISSUE RELATED
TO FUTURE EXTENSIONS<BR>for this week's IPP telecon, Wednesday, 3/15, 10-12 PST
(1-3 EST). Please<BR>send comments by email as well, as
usual.<BR><BR>Hugo,<BR><BR>Good catch from the Model and Semantics document. You
wrote the following<BR>three paragraphs:<BR><BR>Novell's shipping implementation
of the IPP Server does not accept *any*<BR>"out-of-band" values as per
section 4.1 of the "IPP/1.1: Model and<BR>Semantics"
document:<BR><BR>"All attributes in a request MUST have one or more values
as defined in<BR>Sections 4.2 to 4.4. Thus clients MUST NOT supply
attributes with<BR>"out-of-band" values."<BR><BR>We currently
discard a request in its entirety if it contains an<BR>"out-of-band"
value.<BR><BR><BR><BR>That section in the IPP Model and Semantics document goes
on to say:<BR><BR>All attributes in a request MUST have one or more values as
defined in<BR>Sections 4.2 to 4.4. Thus clients MUST NOT supply attributes
with<BR>"out-of-band" values. All attributes in a response MUST
have one or more<BR>values as defined in Sections 4.2 to 4.4 or a single
"out-of-band" value.<BR><BR>So for IPP/1.1, the intent was that the
out-of-band values are only for<BR>responses, and not for requests. And an
"out-of-band" value can occur alone<BR>in a response, it cannot occur
in combination with other values.<BR><BR><BR><BR>However, some of the extensions
that we have in the works need/allow for new<BR>out-of-band values not defined
in IPP/1.1 to be sent in a request:<BR><BR>a. for creating jobs with
"xxx" collection attributes for which the Printer<BR>might have an
"xxx-default" configured, that the client doesn't want, the<BR>client
can supply the new 'none' out-of-band value. This 'none' value
also<BR>seem useful for several other attribute syntaxes that don't have a
natural<BR>"none" defined, such as mimeMediaType and
uriScheme.<BR><BR>b. For the Set-Job-Attributes and Set-Printer-Attributes
operations, we have<BR>the need for the client to submit the 'delete-attribute'
out-of-band value.<BR><BR>c. For the Set-Printer-Attributes operation we allow
the System<BR>Administrator to send the IPP/1.1 'no-value' out-of-band value in
a request<BR>in order to set a Printer attribute back to the unconfigured
value.<BR><BR>d. In the Get-Printer-Supported-Values, we allow the new
'any-value' (in<BR>combination with the 'name' attribute syntax value) to come
back in a<BR>response with other values.<BR><BR><BR>So we want to continue these
extensions, we will need to clarify the Model<BR>document to indicate that the
restriction on sending out-of-band values<BR>applies to the out-of-band values
defined in this document and that future<BR>out-of-band values may be defined
for use in requests.<BR><BR>ISSUE: Ok to clarify the Model and Semantics
document by clarifying the<BR>following paragraph:<BR><BR>All attributes in a
request MUST have one or more values as defined in<BR>Sections 4.2 to 4.4.
Thus clients MUST NOT supply attributes with<BR>"out-of-band"
values. All attributes in a response MUST have one or more<BR>values as
defined in Sections 4.2 to 4.4 or a single "out-of-band"
value.<BR><BR>to:<BR><BR>All attributes in a request MUST have one or more
values as defined in<BR>Sections 4.2 to 4.4. Thus clients MUST NOT supply
attributes with any of<BR>the "out-of-band" values defined in this
document. However, future<BR>extensions may allow specific out-of-band
values in requests. All<BR>attributes in a response MUST have one or more
values as defined in Sections<BR>4.2 to 4.4 or a single "out-of-band"
value defined in this document. In the<BR>future, certain
"out-of-band" values MAY be allowed in combination with<BR>other
values in a response.<BR><BR><BR><BR>This would be the same kind of a
clarification for the Model and Semantics<BR>document that we have just done for
the Transport and Encoding document (see<BR>thread below). In the
Transport and Encoding document we have clarified<BR>that the zero-length
requirement for out-of-band values applies to the three<BR>values defined in
this document. Then a future out-of-band definition could<BR>have a non-zero
length, if we agree to allow a new out-of-band value<BR>definition to
allow/require a value (non-zero length).<BR><BR>Comments?<BR><BR><BR>BTW, the
Conformance section for IPP/1.1 has the following requirement which<BR>was put
there in order to allow us to define extensions in requests that<BR>would not
confuse or break Printers:<BR><BR>5.2.6 Attribute Syntaxes<BR>An IPP object MUST
be able to accept any of the attribute syntaxes defined<BR>in Section 4.1,
including their full range, in any operation in which a<BR>client may supply
attributes or the system administrator may configure<BR>attributes (by means
outside the scope of this IPP/1.1 document). In<BR>particular for each
attribute that the IPP object supports whose attribute<BR>syntax is 'text', the
IPP object MUST accept and process both the<BR>'textWithoutLanguage' and
'textWithLanguage' forms. Similarly, for each<BR>attribute that the IPP
object supports whose attribute syntax is 'name', the<BR>IPP object MUST accept
and process both the 'nameWithoutLanguage' and<BR>'nameWithLanguage'
forms. Furthermore, an IPP object MUST return attributes<BR>to the client
in operation responses that conform to the syntax specified in<BR>Section 4.1,
including their full range if supplied previously by a
client.<BR><BR>Tom<BR><BR><BR><BR>-----Original Message-----<BR>From: Hugo Parra
[mailto:HPARRA@novell.com]<BR>Sent: Thursday, March 09, 2000 11:42<BR>To:
hastings@cp10.es.xerox.com; rbergma@hitachi-hkis.com<BR>Cc:
ipp@pwg.org<BR>Subject: RE: IPP> OPS - Ok that the 'any-value' out-of-band
value has an<BR>attribute value?<BR><BR><BR>See my comments
below.<BR>-Hugo<BR><BR>>>> "Hastings, Tom N"
<hastings@cp10.es.xerox.com> 03/09/00 12:02PM >>><BR>> Here is
what IPP/1.0 and IPP/1.1 [ipp-pro] documents up until the March 1,<BR>> 2000
version have said:<BR>><BR>> If a value-tag contains an
"out-of-band" value, such as "unsupported", the<BR>>
value-length MUST be 0 and the value empty - the value has no meaning
when<BR>> the value-tag has an "out-of-band" value.
<BR>><BR>><BR>> Here is the new paragraph in the March 1, 2000
[ipp-pro] version:<BR>><BR>> If a value-tag contains an
"out-of-band" value defined in this document,<BR>> such as
"unsupported", the value-length MUST be 0 and the value empty;
the<BR>> value has no meaning when the value-tag has one of these
"out-of-band"<BR>> values. However, the definitions of
additional "out-of-band" values in<BR>> future documents are able
to explicitly use the value field and have a<BR>> value-length that is
non-zero, if there is a need for additional<BR>information<BR>> to be
associated with the out-of-band value. Unless the definition of an<BR>>
"out-of-band" value explicitly allows for a value, the value-length
MUST<BR>be<BR>> 0 and the value empty.<BR>><BR>><BR>> The intent of
this March 1, 2000 clarification was to limit the<BR>restriction<BR>> to
existing defined out-of-band values in [ipp-pro],
namely,<BR>'unsupported',<BR>> 'no-value', and 'unknown', and to allow future
definitions of NEW<BR>> out-of-band values to have a value if the definition
needed such a value.<BR>> So the three out-of-band values defined so far in
[ipp-pro] are defined to<BR>> REQUIRE 0 length, but the clarification allows
us in the future, if we<BR>want<BR>> (and if it doesn't break existing
clients accepting responses, or existing<BR>> servers accepting requests) to
define NEW out-of-band values which do use<BR>> the length field (such as the
'any-value'). However, if this is going to<BR>> break existing clients
and existing servers, then we shouldn't define new<BR>> out-of-band values
with non-zero length. However, lets be clear,<BR>> implementers
aren't free to add values to out-of-band values, unless the<BR>> definition
of that out-of-band value allows a non-zero value field.<BR>> <BR>> We
have the following new out-of-band values in IPP extension documents:<BR>>
<BR>> 'none', 'not-settable', 'delete-attribute', and
'any-value'<BR>> <BR>> and [ipp-pro] reserves the 'default' out-of-band
value for future<BR>> definition. O Of all these values, only the
'any-value' is proposed to<BR>have<BR>> a non-zero value field (which
contains the attribute syntax code that the<BR>> 'any-value' goes
with). None of the other proposed out-of-band values<BR>have<BR>> a
non-zero length.<BR>> <BR>> If having a non-zero length for 'any-value' is
a real compatibility<BR>problem<BR>> (see questions to Hugo below), then a
possibility would be to define<BR>> 'any-value' with a zero-length and say
that the definition of the<BR>attribute<BR>> indicates what attribute syntax
the 'any-value' goes with. This could be<BR>> done by changing the
"Job and Printer Set Operations" document only. The<BR>>
[ipp-pro] could still leave us the possibility in the future as in
the<BR>March<BR>> 1, 2000 text.<BR>> <BR>> Comments?<BR>> <BR>>
<BR>> Hugo,<BR>> <BR>> What does your server code do if it gets an
out-of-band value with a<BR>> non-zero length? <BR><BR>Novell's
shipping implementation of the IPP Server does not accept
*any*<BR>"out-of-band" values as per section 4.1 of the "IPP/1.1:
Model and<BR>Semantics" document:<BR><BR>"All attributes in a request
MUST have one or more values as defined in<BR>Sections 4.2 to 4.4. Thus
clients MUST NOT supply attributes with<BR>"out-of-band"
values."<BR><BR>We currently discard a request in its entirety if it
contains an<BR>"out-of-band" value.<BR><BR>> <BR>>
a. Reject the request with client-error-bad-request or some such
code?<BR>> b. Change the length to 0 and throw away the value
data?<BR>> c. return the attribute in the Unsupported Attributes
Group?<BR>> <BR>> What does your client code do if it gets an out-of-band
value with a<BR>> non-zero length?<BR>> <BR>> a. simply
skip over the value field as with any other value<BR>> b. ignore
the length, assume that it meant to be 0, and try to interpret<BR>> the value
field as the next length field (and get terribly confused)?<BR>>
c. bother the user with a message about the server returning incorrect<BR>>
syntax?<BR><BR>Novell's IPP Gateway allows an NDPS Printer Agent to front-end an
IPP<BR>printer device. It doesn't have a UI of its own but causes NDPS
printer and<BR>job state and state reasons to be set to reflect its interaction
with the<BR>device. Currently, if it runs into a non-zero length
"out-of-band" value it<BR>discards the IPP response in its
entirety. The ramifications of this<BR>failure depend on the specific IPP
operation that failed. <BR><BR>As I stated in a previous message, this is not
shipping code and can be<BR>easily modified. The IPP Server code is a
different story, though.<BR><BR>> <BR>> <BR>> NOTE: that the
'any-value' out-of-band value with a non-zero length field<BR>is<BR>> only
defined so far for the new Get-Printer-Supported-Values operation.<BR>> Does
limiting it to this purpose help with the backwards compatibility<BR>>
problem?<BR>> <BR>> However, it could be used in any
"xxx-supported" attributes to indicate<BR>that<BR>> validation is
not performed on that attribute (something Carl Kugler<BR>> mentioned a need
for certain servers that just want to store away or<BR>forward<BR>> jobs
without validating them). When used for this purpose, it might
then<BR>be<BR>> used in a Set-Printer-Attributes operation to configure
an<BR>"xxx-supported",<BR>> so it could go in the client to server
direction. But again the<BR>> Set-Printer-Attributes is a new
operation. The only problem with existing<BR>> client or server code
would be a client that did a Get-Printer-Attributes<BR>> requesting
"xxx-supported" where it might get back the 'any-value'<BR>>
out-of-band value. But what would such a client (like yours) do?<BR>>
Hopefully, not crash. If the client quietly skips over the value field
as<BR>> with any other attribute value, then there shouldn't be any problem,
even<BR>> with this use of 'any-value'.<BR>> <BR>> But in any case, we
need to be very careful not to define things that will<BR>> break existing
implementations, hence this mail thread.<BR>> <BR>> Comments?<BR>>
<BR>> Thanks,<BR>> Tom <BR>> <BR>> <BR>> <BR>> -----Original
Message-----<BR>> From: Ron Bergman [mailto:rbergma@hitachi-hkis.com]
<BR>> Sent: Thursday, March 09, 2000 10:08<BR>> To: Hugo Parra<BR>> Cc:
hastings@cp10.es.xerox.com; ipp@pwg.org <BR>> Subject: Re: IPP> OPS - Ok
that the 'any-value' out-of-band value hasan<BR>> attribute value?<BR>>
<BR>> <BR>> All,<BR>> <BR>> In the IPP 1.1 Protocol document, the
paragraph cited<BR>> by Hugo goes on to read...<BR>> <BR>>
"However, the definitions of additional "out-of-band"<BR>>
values in future documents are able to explicitly use the value field<BR>>
and have a value-length that is non-zero, if there is a need for<BR>>
additional information to be associated with the out-of-band value.<BR>>
Unless the definition of an "out-of-band" value explicitly allows for
a<BR>> value, the value-length MUST be 0 and the value empty."<BR>>
<BR>> So a 1.1 implemetation must not break, but a 1.0 might.<BR>>
<BR>> Ron Bergman<BR>>
Hitachi Koki Imaging Solutions<BR>> <BR>> <BR>> Hugo Parra
wrote:<BR>> <BR>> All, Our current client implementation (Novell's
IPP Gateway) checks<BR>> that all "out of band" attributes have
value lengths of zero. This<BR>> code hasn't yet been officially
released, so it's still possible to<BR>> change it, if needs be. But
make no mistake, allowing non-zero values<BR>> for "out-of-band"
values does break the current IPP rules. Section<BR>> 3.10 of the
"IPP/1.0: Encoding and Transport" document reads: "If a<BR>>
value-tag contains an "out-of-band" value, such as
"unsupported", the<BR>> value-length MUST be 0 and the value empty
&mdash; the value has no<BR>> meaning when the value-tag has an
"out-of-band" value." -Hugo<BR>><BR></DIV></BODY></HTML>