📄 rfc2639.txt
字号:
value to the Unsupported Attributes response group and REJECT/RETURN 'client-error-attributes-or-values-not- supported'. job-media-sheets (integer(0:MAX)) IF NOT a single 'integer' value equal to 4 octets, REJECT/RETURN 'client-error-bad-request'. IF NOT in the range of the Printer object's "job-media-sheets- supported" attribute, copy the attribute and the unsupported value to the Unsupported Attributes response group and REJECT/RETURN 'client-error-attributes-or-values-not- supported'. message (text(127)) IF NOT a single 'text' value, REJECT/RETURN 'client-error-bad- request'. IF the value length is greater than 127 octets, REJECT/RETURN 'client-error-request-value-too-long'. unknown or unsupported attribute IF the attribute syntax supplied by the client is supported but the length is not legal for that attribute syntax, REJECT/RETURN 'client-error-request-value-too-long'. ELSE copy the attribute and value to the Unsupported Attributes response group and change the attribute value to the "out-of- band" 'unsupported' value, but otherwise ignore the attribute. Note: Future Operation attributes may be added to the protocol specification that may occur anywhere in the specified group. When the operation is otherwise successful, the IPP object returns the 'successful-ok-ignored-or-substituted-attributes' status code. Ignoring unsupported Operation attributes in all operations is analogous to the handling of unsupported Job Template attributes in the create and Validate-Job operations when the client supplies the "ipp-attribute-fidelity" Operation attribute with the 'false' value. This last rule is so that we can add OPTIONAL Operation attributes to future versions of IPP so that older clients can inter-work with new IPP objects and newer clients can inter-work with older IPP objects. (If the new attribute cannot be ignored without performing unexpectedly, the major version number wouldHastings & Manros Informational [Page 25]RFC 2639 IPP/1.0: Implementer's Guide July 1999 have been increased in the protocol document and in the request). This rule for Operation attributes is independent of the value of the "ipp-attribute-fidelity" attribute. For example, if an IPP object doesn't support the OPTIONAL "job-k-octets" attribute', the IPP object treats "job-k-octets" as an unknown attribute and only checks the length for the 'integer' attribute syntax supplied by the client. If it is not four octets, the IPP object REJECTS the request and RETURNS the 'client-error-bad-request' status code, else the IPP object copies the attribute to the Unsupported Attribute response group, setting the value to the "out-of-band" ' unsupported' value, but otherwise ignores the attribute.2.2.2 Suggested Additional Processing Steps for Operations that Create/Validate Jobs and Add Documents This section in combination with the previous section recommends the processing steps for the Print-Job, Validate-Job, Print-URI, Create- Job, Send-Document, and Send-URI operations that IPP objects SHOULD use. These are the operations that create jobs, validate a Print-Job request, and add documents to a job.2.2.2.1 Default "ipp-attribute-fidelity" if not supplied The Printer object checks to see if the client supplied an "ipp- attribute-fidelity" Operation attribute. If the attribute is not supplied by the client, the IPP object assumes that the value is 'false'.2.2.2.2 Check that the Printer object is accepting jobs If the value of the Printer object's "printer-is-accepting-jobs" is 'false', the Printer object REJECTS the request and RETURNS the 'server-error-not-accepting-jobs' status code.2.2.2.3 Validate the values of the Job Template attributes An IPP object validates the values of all Job Template attribute supplied by the client. The IPP object performs the analogous syntactic validation checks of each Job Template attribute value that it performs for Operation attributes (see Section 2.2.1.5.): a)that the length of each value is correct for the attribute syntax tag supplied by the client according to [RFC2566] Section 4.1. b)that the attribute syntax tag is correct for that attribute according to [RFC2566] Sections 4.2 to 4.4.Hastings & Manros Informational [Page 26]RFC 2639 IPP/1.0: Implementer's Guide July 1999 c)that multiple values are supplied only for multi-valued attributes, i.e., that are 1setOf X according to [RFC2566] Sections 4.2 to 4.4. As in Section 2.2.1.5, if any of these syntactic checks fail, the IPP object REJECTS the request and RETURNS the 'client-error-bad-request' or 'client-error-request-value-too-long' status code as appropriate, independent of the value of the "ipp-attribute-fidelity". Since such an error is most likely to be an error detected by a client developer, rather than by an end-user, the IPP object NEED NOT return an indication of which attribute had the error in either the Unsupported Attributes Group or the Status Message. The description for each of these syntactic checks is explicitly expressed in the first IF statement in the following table. Each Job Template attribute MUST occur no more than once. If an IPP Printer receives a create request with multiple occurrences of a Job Template attribute, it MAY: 1.reject the operation and return the 'client-error-bad syntax' error status code 2.accept the operation and use the first occurrence of the attribute 3.accept the operation and use the last occurrence of the attribute depending on implementation. Therefore, clients MUST NOT supply multiple occurrences of the same Job Template attribute in the Job Attributes group in the request.2.2.3 Algorithm for job validation The process of validating a Job-Template attribute "xxx" against a Printer attribute "xxx-supported" can use the following validation algorithm (see section 3.2.1.2 in [RFC2566]). To validate the value U of Job-Template attribute "xxx" against the value V of Printer "xxx-supported", perform the following algorithm: 1.If U is multi-valued, validate each value X of U by performing the algorithm in Table 3 with each value X. Each validation is separate from the standpoint of returning unsupported values. Example: If U is "finishings" that the client supplies with 'staple', 'bind' values, then X takes on the successive values: 'staple', then 'bind'Hastings & Manros Informational [Page 27]RFC 2639 IPP/1.0: Implementer's Guide July 1999 2.If V is multi-valued, validate X against each Z of V by performing the algorithm in Table 3 with each value Z. If a value Z validates, the validation for the attribute value X succeeds. If it fails, the algorithm is applied to the next value Z of V. If there are no more values Z of V, validation fails. Example: If V is "sides-supported" with values: 'one-sided', 'two-sided-long', and 'two-sided-short', then Z takes on the successive values: 'one-sided', 'two-sided-long', and 'two-sided-short'. If the client supplies "sides" with 'two- sided-long', the first comparison fails ('one-sided' is not equal to 'two-sided-long'), the second comparison succeeds ('two-sided-long' is equal to 'two-sided-long"), and the third comparison ('two-sided-short' with 'two-sided-long') is not even performed. 3.If both U and V are single-valued, let X be U and Z be V and use the validation rules in Table 3. Table 3 - Rules for validating single values X against Z attribute attribute validated if: syntax of X syntax of Z integer rangeOfInteger X is within the range of Z uri uriScheme the uri scheme in X is equal to Z any boolean the value of Z is TRUE any any X and Z are of the same type and are equal. If the value of the Printer object's "xxx-supported" attribute is ' no-value' (because the system administrator hasn't configured a value), the check always fails. If the check fails, the IPP object copies the attribute to the Unsupported Attributes response group with its unsupported value. If the attribute contains more than one value, each value is checked and each unsupported value is separately copied, while supported values are not copied. If an IPP object doesn't recognize/support a Job Template attribute, i.e., there is no corresponding Printer object "xxx-supported" attribute, the IPP object treats the attribute as an unknown or unsupported attribute (see the last row in the table below).Hastings & Manros Informational [Page 28]RFC 2639 IPP/1.0: Implementer's Guide July 1999 If some Job Template attributes are supported for some document formats and not for others or the values are different for different document formats, the IPP object SHOULD take that into account in this validation using the value of the "document-format" supplied by the client (or defaulted to the value of the Printer's "document- format-default" attribute, if not supplied by the client). For example, if "number-up" is supported for the 'text/plain' document format, but not for the 'application/postscript' document format, the check SHOULD (though it NEED NOT) depend on the value of the "document-format" operation attribute. See "document-format" in [RFC2566] section 3.2.1.1 and 3.2.5.1. Note: whether the request is accepted or rejected is determined by the value of the "ipp-attribute-fidelity" attribute in a subsequent step, so that all Job Template attribute supplied are examined and all unsupported attributes and/or values are copied to the Unsupported Attributes response group. job-priority (integer(1:100)) IF NOT a single 'integer' value with a length equal to 4 octets, REJECT/RETURN 'client-error-bad-request'. IF NOT supplied by the client, use the value of the Printer object's "job-priority-default" attribute at job submission time. IF NOT in the range 1 to 100, inclusive, copy the attribute and the unsupported value to the Unsupported Attributes response group. Map the value to the nearest supported value in the range 1:100 as specified by the number of discrete values indicated by the value of the Printer's "job-priority-supported" attribute. See the formula in [RFC2566] Section 4.2.1. job-hold-until (type3 keyword | name) IF NOT a single 'keyword' or 'name' value, REJECT/RETURN 'client- error-bad-request'. IF the value length is greater than 255 octets, REJECT/RETURN 'client-error-request-value-too-long'. IF NOT supplied by the client, use the value of the Printer object's "job-hold-until" attribute at job submission time. IF NOT in the Printer object's "job-hold-until-supported" attribute, copy the attribute and the unsupported value to the Unsupported Attributes response group.Hastings & Manros Informational [Page 29]RFC 2639 IPP/1.0: Implementer's Guide July 1999 job-sheets (type3 keyword | name) IF NOT a single 'keyword' or 'name' value, REJECT/RETURN 'client- error-bad-request'. IF the value length is greater than 255 octets, REJECT/RETURN 'client-error-request-value-too-long'. IF NOT in the Printer object's "job-sheets-supported" attribute, copy the attribute and the unsupported value to the Unsupported Attributes response group. multiple-document-handling (type2 keyword) IF NOT a single 'keyword' value, REJECT/RETURN 'client-error-bad- request'. IF the value length is greater than 255 octets, REJECT/RETURN 'client-error-request-value-too-long'. IF NOT in the Printer object's "multiple-document-handling- supported" attribute, copy the attribute and the unsupported value to the Unsupported Attributes response group. copies (integer(1:MAX)) IF NOT a single 'integer' value with a length equal to 4 octets, REJECT/RETURN 'client-error-bad-request'. IF NOT in range of the Printer object's "copies-supported" attribute copy the attribute and the unsupported value to the Unsupported Attributes response group. finishings (1setOf type2 enum) IF NOT an 'enum' value(s) each with a length equal to 4 octets, REJECT/RETURN 'client-error-bad-request'. IF NOT in the Printer object's "finishings-supported" attribute, copy the attribute and the unsupported value(s), but not any supported values, to the Unsupported Attributes response group. page-ranges (1setOf rangeOfInteger(1:MAX)) IF NOT a 'rangeOfInteger' value(s) each with a length equal to 8 octets, REJECT/RETURN 'client-error-bad-request'. IF first value is greater than second value in any range, the ranges are not in ascending order, or ranges overlap, REJECT/RETURN 'client-error-bad-request'. IF the value of the Printer object's "page-ranges-supported" attribute is 'false', copy the attribute to the Unsupported Attributes response group and set the value to the "out-of- band" 'unsupported' value.Hastings & Manros Informational [Page 30]RFC 2639 IPP/1.0: Implementer's Guide July 1999
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -