| < draft-ietf-ipp-implementers-guide-v11-00.txt | draft-ietf-ipp-implementers-guide-v11-01.txt > | |||
|---|---|---|---|---|
| INTERNET-DRAFT | INTERNET-DRAFT | |||
| draft-ietf-ipp-implementers-guide-v11-00.txt | draft-ietf-ipp-implementers-guide-v11-01.txt | |||
| T. Hastings | T. Hastings | |||
| Xerox Corporation | Xerox Corporation | |||
| C. Manros | C. Manros | |||
| Xerox Corporation | Xerox Corporation | |||
| C. Kugler | C. Kugler | |||
| IBM Printing Systems Co | IBM Printing Systems Co | |||
| H. Holst | H. Holst | |||
| i-data Printing Systems | i-data Printing Systems | |||
| September 27, 1999 | P. Zehler | |||
| Xerox Corporation | ||||
| May 30, 2000 | ||||
| Internet Printing Protocol/1.1: Implementer's Guide | Internet Printing Protocol/1.1: Implementer's Guide | |||
| Copyright (C) The Internet Society (1999). All Rights Reserved. | Copyright (C) The Internet Society (2000). All Rights Reserved. | |||
| Status of this Memo | Status of this Memo | |||
| This document is an Internet-Draft and is in full conformance with all | This document is an Internet-Draft and is in full conformance with all | |||
| provisions of Section 10 of [RFC2026]. Internet-Drafts are working | provisions of Section 10 of [RFC2026]. Internet-Drafts are working | |||
| documents of the Internet Engineering Task Force (IETF), its areas, and | documents of the Internet Engineering Task Force (IETF), its areas, and | |||
| its working groups. Note that other groups may also distribute working | its working groups. Note that other groups may also distribute working | |||
| documents as Internet-Drafts. | documents as Internet-Drafts. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| skipping to change at page 2, line ? ¶ | skipping to change at page 2, line 4 ¶ | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| Abstract | Abstract | |||
| This document is one of a set of documents, which together describe all | This document is one of a set of documents, which together describe all | |||
| aspects of a new Internet Printing Protocol (IPP). IPP is an | aspects of a new Internet Printing Protocol (IPP). IPP is an | |||
| application level protocol that can be used for distributed printing | application level protocol that can be used for distributed printing | |||
| using Internet tools and technologies. This document contains | using Internet tools and technologies. This document contains | |||
| information that supplements the IPP Model and Semantics [IPP-MOD] and | information that supplements the IPP Model and Semantics [IPP-MOD] and | |||
| the IPP Transport and Encoding [IPP-PRO] documents. It is intended to | the IPP Transport and Encoding [IPP-PRO] documents. It is intended to | |||
| Expires November 30, 2000 | ||||
| help implementers understand IPP/1.1, as well as IPP/1.0, and some of | help implementers understand IPP/1.1, as well as IPP/1.0, and some of | |||
| the considerations that may assist them in the design of their client | the considerations that may assist them in the design of their client | |||
| and/or IPP object implementations. For example, a typical order of | and/or IPP object implementations. For example, a typical order of | |||
| processing requests is given, including error checking. Motivation for | processing requests is given, including error checking. Motivation for | |||
| some of the specification decisions is also included. | some of the specification decisions is also included. | |||
| Expires November 30, 2000 | ||||
| The full set of IPP documents includes: | The full set of IPP documents includes: | |||
| Design Goals for an Internet Printing Protocol [RFC2567] | Design Goals for an Internet Printing Protocol [RFC2567] | |||
| Rationale for the Structure and Model and Protocol for the Internet | Rationale for the Structure and Model and Protocol for the Internet | |||
| Printing Protocol [RFC2568] | Printing Protocol [RFC2568] | |||
| Internet Printing Protocol/1.1: Model and Semantics [IPP-MOD] | Internet Printing Protocol/1.1: Model and Semantics [IPP-MOD] | |||
| Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO] | Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO] | |||
| Mapping between LPD and IPP Protocols [RFC2569] | Mapping between LPD and IPP Protocols [RFC2569] | |||
| The document, "Design Goals for an Internet Printing Protocol", takes a | The document, "Design Goals for an Internet Printing Protocol", takes a | |||
| broad look at distributed printing functionality, and it enumerates | broad look at distributed printing functionality, and it enumerates | |||
| skipping to change at page 3, line 5 ¶ | skipping to change at page 4, line 5 ¶ | |||
| The document, "Internet Printing Protocol/1.1: Encoding and Transport", | The document, "Internet Printing Protocol/1.1: Encoding and Transport", | |||
| is a formal mapping of the abstract operations and attributes defined in | is a formal mapping of the abstract operations and attributes defined in | |||
| the model document onto HTTP/1.1. It also defines the encoding rules | the model document onto HTTP/1.1. It also defines the encoding rules | |||
| for a new Internet media type called "application/ipp". | for a new Internet media type called "application/ipp". | |||
| The document, "Mapping between LPD and IPP Protocols", gives some advice | The document, "Mapping between LPD and IPP Protocols", gives some advice | |||
| to implementers of gateways between IPP and LPD (Line Printer Daemon) | to implementers of gateways between IPP and LPD (Line Printer Daemon) | |||
| implementations. | implementations. | |||
| Expires March 27, 2000 | Expires November 30, 2000 | |||
| TABLE OF CONTENTS | TABLE OF CONTENTS | |||
| 1 INTRODUCTION......................................................6 | 1 INTRODUCTION.......................................................8 | |||
| 1.1 CONFORMANCE LANGUAGE...........................................6 | 1.1 Conformance language.............................................8 | |||
| 1.2 OTHER TERMINOLOGY..............................................6 | 1.2 Other terminology................................................9 | |||
| 1.3 ISSUES RAISED FROM INTEROPERABILITY BAKE OFFS..................7 | 1.3 Issues Raised from Interoperability Bake Offs....................9 | |||
| 2 IPP OBJECTS.......................................................7 | 2 IPP OBJECTS........................................................9 | |||
| 3 IPP OPERATIONS....................................................7 | 3 IPP OPERATIONS....................................................10 | |||
| 3.1 COMMON SEMANTICS...............................................7 | 3.1 Common Semantics................................................10 | |||
| 3.1.1 Summary of Operation Attributes.............................8 | 3.1.1 Summary of Operation Attributes.............................10 | |||
| 3.1.2 Suggested Operation Processing Steps for IPP Objects (Issue | 3.1.2 Suggested Operation Processing Steps for IPP Objects........16 | |||
| 1.21) 12 | 3.1.2.1 Suggested Operation Processing Steps for all Operations.17 | |||
| 3.1.2.1 Suggested Operation Processing Steps for all Operations 14 | 3.1.2.1.1 Validate version number............................17 | |||
| 3.1.2.1.1 Validate version number.............................14 | 3.1.2.1.2 Validate operation identifier......................19 | |||
| 3.1.2.1.2 Validate operation identifier.......................15 | 3.1.2.1.3 Validate the request identifier....................19 | |||
| 3.1.2.1.3 Validate the request identifier.....................16 | 3.1.2.1.4 Validate attribute group and attribute presence and | |||
| 3.1.2.1.4 Validate attribute group and attribute presence and | order 19 | |||
| order 16 | 3.1.2.1.4.1 Validate the presence and order of attribute | |||
| 3.1.2.1.4.1 Validate the presence and order of attribute groups | groups 19 | |||
| 16 | 3.1.2.1.4.2 Ignore unknown attribute groups in the expected | |||
| 3.1.2.1.4.2Ignore unknown attribute groups in the expected | position 20 | |||
| position....................................................16 | 3.1.2.1.4.3 Validate the presence of a single occurrence of | |||
| 3.1.2.1.4.3Validate the presence of a single occurrence of | required Operation attributes................................20 | |||
| required Operation attributes...............................17 | 3.1.2.1.5 Validate the values of the REQUIRED Operation | |||
| 3.1.2.1.5 Validate the values of the REQUIRED Operation | attributes 27 | |||
| attributes23 | 3.1.2.1.6 Validate the values of the OPTIONAL Operation | |||
| 3.1.2.1.6 Validate the values of the OPTIONAL Operation | attributes 31 | |||
| attributes27 | ||||
| 3.1.2.2 Suggested Additional Processing Steps for Operations that | 3.1.2.2 Suggested Additional Processing Steps for Operations that | |||
| Create/Validate Jobs and Add Documents..........................30 | Create/Validate Jobs and Add Documents..........................35 | |||
| 3.1.2.2.1 Default "ipp-attribute-fidelity" if not supplied....30 | 3.1.2.2.1 Default "ipp-attribute-fidelity" if not supplied...35 | |||
| 3.1.2.2.2 Check that the Printer object is accepting jobs.....30 | 3.1.2.2.2 Check that the Printer object is accepting jobs....35 | |||
| 3.1.2.2.3 Validate the values of the Job Template attributes..30 | 3.1.2.2.3 Validate the values of the Job Template attributes.36 | |||
| 3.1.2.3 Algorithm for job validation...........................31 | 3.1.2.3 Algorithm for job validation............................37 | |||
| 3.1.2.3.1 Check for conflicting Job Template attributes values 36 | 3.1.2.3.1 Check for conflicting Job Template attributes values42 | |||
| 3.1.2.3.2 Decide whether to REJECT the request................37 | 3.1.2.3.2 Decide whether to REJECT the request...............43 | |||
| 3.1.2.3.3 For the Validate-Job operation, RETURN one of the | 3.1.2.3.3 For the Validate-Job operation, RETURN one of the | |||
| success status codes..........................................38 | success status codes...........................................44 | |||
| 3.1.2.3.4 Create the Job object with attributes to support....38 | 3.1.2.3.4 Create the Job object with attributes to support...45 | |||
| 3.1.2.3.5 Return one of the success status codes..............40 | 3.1.2.3.5 Return one of the success status codes.............46 | |||
| 3.1.2.3.6 Accept appended Document Content....................40 | 3.1.2.3.6 Accept appended Document Content...................47 | |||
| 3.1.2.3.7 Scheduling and Starting to Process the Job..........40 | 3.1.2.3.7 Scheduling and Starting to Process the Job.........47 | |||
| 3.1.2.3.8 Completing the Job..................................41 | 3.1.2.3.8 Completing the Job.................................47 | |||
| 3.1.2.3.9 Destroying the Job after completion.................41 | 3.1.2.3.9 Destroying the Job after completion................47 | |||
| 3.1.2.3.10Interaction with "ipp-attribute-fidelity"...........41 | 3.1.2.3.10 Interaction with "ipp-attribute-fidelity"..........48 | |||
| 3.1.2.3.11Character set code conversion support (Issue 1.5)...41 | 3.1.2.3.11 Character set code conversion support..............48 | |||
| 3.1.2.3.12What charset to return when an unsupported charset is | ||||
| requested (Issue 1.19)?.......................................42 | ||||
| 3.1.2.3.13Natural Language Override (NLO) (Issue 1.45)........43 | ||||
| 3.1.3 Status codes returned by operation (Issue 1.50)............44 | ||||
| 3.1.3.1 Printer Operations.....................................45 | ||||
| 3.1.3.1.1 Print-Job...........................................45 | ||||
| Expires March 27, 2000 | Expires November 30, 2000 | |||
| 3.1.3.1.2 Print-URI...........................................47 | 3.1.2.3.12 What charset to return when an unsupported charset is | |||
| 3.1.3.1.3 Validate-Job........................................47 | requested (Issue 1.19)?........................................49 | |||
| 3.1.3.1.4 Create-Job..........................................47 | 3.1.2.3.13 Natural Language Override (NLO)....................50 | |||
| 3.1.3.1.5 Get-Printer-Attributes..............................47 | 3.1.3 Status codes returned by operation..........................52 | |||
| 3.1.3.1.6 Get-Jobs............................................48 | 3.1.3.1 Printer Operations......................................52 | |||
| 3.1.3.1.7 Pause-Printer.......................................49 | 3.1.3.1.1 Print-Job..........................................52 | |||
| 3.1.3.1.8 Resume-Printer......................................49 | 3.1.3.1.2 Print-URI..........................................54 | |||
| 3.1.3.1.9 Purge-Printer.......................................50 | 3.1.3.1.3 Validate-Job.......................................54 | |||
| 3.1.3.2 Job Operations.........................................50 | 3.1.3.1.4 Create-Job.........................................55 | |||
| 3.1.3.2.1 Send-Document.......................................50 | 3.1.3.1.5 Get-Printer-Attributes.............................55 | |||
| 3.1.3.2.2 Send-URI............................................51 | 3.1.3.1.6 Get-Jobs...........................................56 | |||
| 3.1.3.2.3 Cancel-Job..........................................51 | 3.1.3.1.7 Pause-Printer......................................57 | |||
| 3.1.3.2.4 Get-Job-Attributes..................................52 | 3.1.3.1.8 Resume-Printer.....................................57 | |||
| 3.1.3.2.5 Hold-Job............................................53 | 3.1.3.1.8.1 What about Printers unable to change state due to | |||
| 3.1.3.2.6 Release-Job.........................................53 | an error condition?..........................................58 | |||
| 3.1.3.2.7 Restart-Job.........................................54 | 3.1.3.1.8.2 How is 'printer-state' handled on Resume-Printer?58 | |||
| 3.1.3.1.9 Purge-Printer......................................59 | ||||
| 3.1.3.2 Job Operations..........................................59 | ||||
| 3.1.3.2.1 Send-Document......................................59 | ||||
| 3.1.3.2.2 Send-URI...........................................60 | ||||
| 3.1.3.2.3 Cancel-Job.........................................60 | ||||
| 3.1.3.2.4 Get-Job-Attributes.................................61 | ||||
| 3.1.3.2.5 Hold-Job...........................................62 | ||||
| 3.1.3.2.6 Release-Job........................................63 | ||||
| 3.1.3.2.7 Restart-Job........................................63 | ||||
| 3.1.3.2.7.1 Can documents be added to a restarted job?.......63 | ||||
| 3.1.4 Returning unsupported attributes in Get-Xxxx responses (Issue | 3.1.4 Returning unsupported attributes in Get-Xxxx responses (Issue | |||
| 1.18) 54 | 1.18) 63 | |||
| 3.1.5 Sending empty attribute groups (Issue 1.16)................54 | 3.1.5 Sending empty attribute groups..............................64 | |||
| 3.2 PRINTER OPERATIONS............................................55 | 3.2 Printer Operations..............................................64 | |||
| 3.2.1 Print-Job operation........................................55 | 3.2.1 Print-Job operation.........................................64 | |||
| 3.2.1.1 Flow controlling the data portion of a Print-Job request | 3.2.1.1 Flow controlling the data portion of a Print-Job request | |||
| (Issue 1.22)....................................................55 | (Issue 1.22)....................................................64 | |||
| 3.2.1.2 Returning job-state in Print-Job response (Issue 1.30).55 | 3.2.1.2 Returning job-state in Print-Job response (Issue 1.30)..65 | |||
| 3.2.2 Get-Printer-Attributes operation...........................56 | 3.2.2 Get-Printer-Attributes operation............................66 | |||
| 3.2.3 Get-Jobs operation.........................................56 | 3.2.3 Get-Jobs operation..........................................66 | |||
| 3.2.3.1 Get-Jobs, my-jobs='true', and 'requesting-user-name' | 3.2.3.1 Get-Jobs, my-jobs='true', and 'requesting-user-name' | |||
| (Issue 1.39)?...................................................56 | (Issue 1.39)?...................................................66 | |||
| 3.2.3.2 Why is there a "limit" attribute in the Get-Jobs | 3.2.3.2 Why is there a "limit" attribute in the Get-Jobs | |||
| operation?......................................................56 | operation?......................................................66 | |||
| 3.2.4 Create-Job operation.......................................57 | 3.2.4 Create-Job operation........................................67 | |||
| 3.3 JOB OPERATIONS................................................57 | 3.3 Job Operations..................................................67 | |||
| 3.3.1 Validate-Job...............................................57 | 3.3.1 Validate-Job................................................67 | |||
| 3.3.2 Restart-Job.................................................67 | ||||
| 4 OBJECT ATTRIBUTES................................................57 | 4 OBJECT ATTRIBUTES.................................................68 | |||
| 4.1 ATTRIBUTE SYNTAX'S............................................57 | 4.1 Attribute Syntax's..............................................68 | |||
| 4.1.1 The 'none' value for empty sets (Issue 1.37)...............58 | 4.1.1 The 'none' value for empty sets (Issue 1.37)................68 | |||
| 4.1.2 Multi-valued attributes (Issue 1.31).......................58 | ||||
| 4.1.3 Case Sensitivity in URIs (issue 1.6).......................58 | ||||
| 4.2 JOB TEMPLATE ATTRIBUTES.......................................59 | ||||
| 4.2.1 multiple-document-handling(type2 keyword)..................59 | ||||
| 4.2.1.1 Support of multiple document jobs......................59 | ||||
| 4.3 JOB DESCRIPTION ATTRIBUTES....................................59 | ||||
| 4.4 PRINTER DESCRIPTION ATTRIBUTES................................60 | ||||
| 4.4.1 queued-job-count...........................................60 | ||||
| 4.4.1.1 Why is "queued-job-count" RECOMMENDED (Issue 1.14)?....60 | ||||
| 4.4.1.2 Is "queued-job-count" a good measure of how busy a printer | ||||
| is (Issue 1.15)?................................................60 | ||||
| 4.4.2 printer-current-time (dateTime)............................60 | ||||
| 4.4.3 Printer-uri................................................61 | ||||
| 5 DNS CONSIDERATIONS...............................................61 | Expires November 30, 2000 | |||
| 4.1.2 Multi-valued attributes (Issue 1.31)........................68 | ||||
| 4.1.3 Case Sensitivity in URIs (issue 1.6)........................69 | ||||
| 4.1.4 Maximum length for xxxWithLanguage and xxxWithoutLanguage...69 | ||||
| 4.2 Job Template Attributes.........................................70 | ||||
| 4.2.1 multiple-document-handling(type2 keyword)...................70 | ||||
| 4.2.1.1 Support of multiple document jobs.......................70 | ||||
| 4.3 Job Description Attributes......................................70 | ||||
| 4.4 Printer Description Attributes..................................71 | ||||
| 4.4.1 queued-job-count............................................71 | ||||
| 4.4.1.1 Why is "queued-job-count" RECOMMENDED (Issue 1.14)?.....71 | ||||
| 4.4.1.2 Is "queued-job-count" a good measure of how busy a printer | ||||
| is (Issue 1.15)?................................................71 | ||||
| 4.4.2 printer-current-time (dateTime).............................71 | ||||
| 4.4.3 'Printer-uri................................................72 | ||||
| 4.5 Empty Jobs......................................................72 | ||||
| 5.1 IPP PRINTER WITH A DNS NAME...................................61 | 5 DIRECTORY CONSIDERATIONS..........................................73 | |||
| Expires March 27, 2000 | 5.1 General Directory Schema Considerations.........................73 | |||
| 5.2 IPP Printer with a DNS name.....................................73 | ||||
| 6 SECURITY CONSIDERATIONS..........................................61 | 6 SECURITY CONSIDERATIONS...........................................73 | |||
| 6.1 QUERYING JOBS WITH IPP THAT WERE SUBMITTED USING OTHER JOB | 6.1 Querying jobs with IPP that were submitted using other job | |||
| SUBMISSION PROTOCOLS (ISSUE 1.32)..................................61 | submission protocols (Issue 1.32)...................................73 | |||
| 7 ENCODING AND TRANSPORT...........................................62 | 7 ENCODING AND TRANSPORT............................................74 | |||
| 7.1 GENERAL HEADERS...............................................64 | 7.1 General Headers.................................................76 | |||
| 7.2 REQUEST HEADERS..............................................64 | 7.2 Request Headers................................................77 | |||
| 7.3 RESPONSE HEADERS..............................................65 | 7.3 Response Headers................................................78 | |||
| 7.4 ENTITY HEADERS...............................................66 | 7.4 Entity Headers.................................................79 | |||
| 7.5 OPTIONAL SUPPORT FOR HTTP/1.0.................................67 | 7.5 Optional support for HTTP/1.0...................................80 | |||
| 7.6 HTTP/1.1 CHUNKING.............................................67 | 7.6 HTTP/1.1 Chunking...............................................80 | |||
| 7.6.1 Disabling IPP Server Response Chunking.....................67 | 7.6.1 Disabling IPP Server Response Chunking......................80 | |||
| 7.6.2 Warning About the Support of Chunked Requests..............67 | 7.6.2 Warning About the Support of Chunked Requests...............80 | |||
| 8 REFERENCES.......................................................68 | 8 REFERENCES........................................................81 | |||
| 8.1 AUTHORS' ADDRESS..............................................69 | 9 AUTHORS' ADDRESS..................................................82 | |||
| 9 NOTICES..........................................................70 | 10 NOTICES..........................................................83 | |||
| TABLES | TABLES | |||
| Table 1 - Summary of Printer operation attributes that sender MUST | Table 1 - Summary of Printer operation attributes that sender MUST | |||
| supply............................................................8 | supply............................................................10 | |||
| Table 2 - Summary of Printer operation attributes that sender MAY supply | Table 2 - Summary of Printer operation attributes that sender MAY supply | |||
| ..................................................................9 | .................................................................11 | |||
| Table 3 - Summary of Job operation attributes that sender MUST supply10 | Expires November 30, 2000 | |||
| Table 4 - Summary of Job operation attributes that sender MAY supply.11 | Table 3 - Summary of Job operation attributes that sender MUST supply13 | |||
| Table 5 - Printer operation response attributes......................12 | Table 4 - Summary of Job operation attributes that sender MAY supply.14 | |||
| Table 6 - Examples of validating IPP version.........................15 | Table 5 - Printer operation response attributes......................15 | |||
| Table 7 - Rules for validating single values X against Z.............32 | Table 6 - Examples of validating IPP version.........................18 | |||
| Expires March 27, 2000 | Table 7 - Rules for validating single values X against Z.............37 | |||
| Expires November 30, 2000 | ||||
| 1 Introduction | 1 Introduction | |||
| The IPP Implementer's Guide (IIG) (this document) contains information | The IPP Implementer's Guide (IIG) (this document) contains information | |||
| that supplements the IPP Model and Semantics [IPP-MOD] and the IPP | that supplements the IPP Model and Semantics [IPP-MOD] and the IPP | |||
| Transport and Encoding [IPP-PRO] documents. As such this information is | Transport and Encoding [IPP-PRO] documents. As such this information is | |||
| not part of the formal specifications. Instead information is presented | not part of the formal specifications. Instead information is presented | |||
| to help implementers understand the specification, including some of the | to help implementers understand the specification, including some of the | |||
| motivation for decisions taken by the committee in developing the | motivation for decisions taken by the committee in developing the | |||
| specification. Some of the implementation considerations are intended | specification. Some of the implementation considerations are intended | |||
| to help implementers design their client and/or IPP object | to help implementers design their client and/or IPP object | |||
| skipping to change at page 6, line 48 ¶ | skipping to change at page 9, line 5 ¶ | |||
| Implementers should read section 13 (APPENDIX A) in [IPP-MOD] in order | Implementers should read section 13 (APPENDIX A) in [IPP-MOD] in order | |||
| to understand these capitalized words. The words MUST, MUST NOT, and | to understand these capitalized words. The words MUST, MUST NOT, and | |||
| REQUIRED indicate what implementations are required to support in a | REQUIRED indicate what implementations are required to support in a | |||
| client or IPP object in order to be conformant to [IPP-MOD] and [IPP- | client or IPP object in order to be conformant to [IPP-MOD] and [IPP- | |||
| PRO]. MAY, NEED NOT, and OPTIONAL indicate was is merely allowed as an | PRO]. MAY, NEED NOT, and OPTIONAL indicate was is merely allowed as an | |||
| implementer option. The verbs SHOULD and SHOULD NOT indicate suggested | implementer option. The verbs SHOULD and SHOULD NOT indicate suggested | |||
| behavior, but which is not required or disallowed, respectively, in | behavior, but which is not required or disallowed, respectively, in | |||
| order to conform to the specification. | order to conform to the specification. | |||
| Expires November 30, 2000 | ||||
| 1.2 Other terminology | 1.2 Other terminology | |||
| The term "sender" refers to the client that sends a request or an IPP | The term "sender" refers to the client that sends a request or an IPP | |||
| object that returns a response. The term "receiver" refers to the IPP | object that returns a response. The term "receiver" refers to the IPP | |||
| object that receives a request and to a client that receives a response. | object that receives a request and to a client that receives a response. | |||
| Expires March 27, 2000 | ||||
| 1.3 Issues Raised from Interoperability Bake Offs | 1.3 Issues Raised from Interoperability Bake Offs | |||
| The IPP WG has conducted two open interoperability "Bake Offs". The | The IPP WG has conducted two open interoperability "Bake Offs". The | |||
| first bake off was held in September 1998 and Bake Off2 was held in | first bake off was held in September 1998 and Bake Off2 was held in | |||
| March 1999. See the summary reports in: | March 1999. See the summary reports in: | |||
| ftp://ftp.pwg.org/pub/pwg/ipp/new_TES/ | ftp://ftp.pwg.org/pub/pwg/ipp/new_TES/ | |||
| The issues raised from the first bake off are numbered 1.n in this | The issues raised from the first bake off are numbered 1.n in this | |||
| document and are described in: | document and are described in: | |||
| ftp://ftp.pwg.org/pub/pwg/ipp/approved-clarifications/ipp-agreed-fixes- | ftp://ftp.pwg.org/pub/pwg/ipp/approved-clarifications/ipp-agreed-fixes- | |||
| 981030.pdf | 981030.pdf | |||
| These issue resolutions have been incorporated into the November 16, | These issue resolutions have been incorporated into the November 16, | |||
| "IPP/1.0 Model and Semantics" [ipp-mod] and the "IPP/1.0 Encoding and | "IPP/1.0 Model and Semantics" [ipp-mod] and the "IPP/1.0 Encoding and | |||
| Transport" [ipp-pro] documents. However, some of the discussion is left | Transport" [IPP-PRO] documents. However, some of the discussion is left | |||
| here in the Implementer's Guide to help understanding. | here in the Implementer's Guide to help understanding. | |||
| The issues raised from Bake Off2 are numbered 2.n in this document and | The issues raised from Bake Off2 are numbered 2.n in this document and | |||
| are described in: | are described in: | |||
| ftp://ftp.pwg.org/pub/pwg/ipp/issues/issues-raised-at-bake-off2.pdf | ftp://ftp.pwg.org/pub/pwg/ipp/issues/issues-raised-at-bake-off2.pdf | |||
| 2 IPP Objects | 2 IPP Objects | |||
| The term "client" in IPP is intended to mean any client that issues IPP | The term "client" in IPP is intended to mean any client that issues IPP | |||
| skipping to change at page 7, line 44 ¶ | skipping to change at page 10, line 5 ¶ | |||
| desktop or a server. In other words, the term "client" does not just | desktop or a server. In other words, the term "client" does not just | |||
| mean end-user clients, such as those associated with desktops. | mean end-user clients, such as those associated with desktops. | |||
| The term "IPP Printer" in IPP is intended to mean an object that accepts | The term "IPP Printer" in IPP is intended to mean an object that accepts | |||
| IPP operation requests and returns IPP operation responses, whether | IPP operation requests and returns IPP operation responses, whether | |||
| implemented in a server or a device. An IPP Printer object MAY, if | implemented in a server or a device. An IPP Printer object MAY, if | |||
| implemented in a server, turn around and forward received jobs (and | implemented in a server, turn around and forward received jobs (and | |||
| other requests) to other devices and print servers/services, either | other requests) to other devices and print servers/services, either | |||
| using IPP or some other protocol. | using IPP or some other protocol. | |||
| Expires November 30, 2000 | ||||
| 3 IPP Operations | 3 IPP Operations | |||
| This section corresponds to Section 3 "IPP Operations" in the IPP/1.1 | This section corresponds to Section 3 "IPP Operations" in the IPP/1.1 | |||
| Model and Semantics document [IPP-MOD]. | Model and Semantics document [IPP-MOD]. | |||
| 3.1 Common Semantics | 3.1 Common Semantics | |||
| This section discusses semantics common to all operations. | This section discusses semantics common to all operations. | |||
| Expires March 27, 2000 | 3.1.1 Summary of Operation Attributes | |||
| 3.1.1Summary of Operation Attributes | ||||
| Legend for the following table: | Legend for the following table: | |||
| R indicates a REQUIRED operation that MUST be supported by the IPP | R indicates a REQUIRED operation that MUST be supported by the IPP | |||
| object (Printer or Job). For attributes, R indicates that the attribute | object (Printer or Job). For attributes, R indicates that the attribute | |||
| MUST be supported by the IPP object supports the associated operation. | MUST be supported by the IPP object supports the associated operation. | |||
| O indicates an OPTIONAL operation or attribute that MAY be supported by | O indicates an OPTIONAL operation or attribute that MAY be supported by | |||
| the IPP object (Printer or Job). | the IPP object (Printer or Job). | |||
| + indicates that this is not an IPP/1.0 feature, but is only a part of | + indicates that this is not an IPP/1.0 feature, but is only a part of | |||
| IPP/1.1 and future versions of IPP. | IPP/1.1 and future versions of IPP. | |||
| Table 1 - Summary of Printer operation attributes that sender MUST | Table 1 - Summary of Printer operation attributes that sender MUST | |||
| supply | supply | |||
| Printer Operations | Printer Operations | |||
| Requests Respo | Requests Respo | |||
| nses | nses | |||
| Operation Print- Pri Crea Get- Get Pause- All | Operation Print- Pri Crea Get- Get Pause- All | |||
| Attributes Job, nt- te- Printer- - Printer Opera | Attributes Job, nt- te- Printer- - Printer Opera | |||
| Validate URI Job Attribut Job , tions | Validate URI Job Attribut Job , tions | |||
| -Job (R) (O) (O) es (R) s Resume- | -Job (R) (O) (O) es (R) s Resume- | |||
| (R) Printer | (R) Printer | |||
| , | , | |||
| Purge- | Purge- | |||
| Printer | Printer | |||
| (O+) | (O+) | |||
| Operation parameters--REQUIRED to be supplied by the sender | Operation parameters--REQUIRED to be supplied by the sender: | |||
| operation-id R R R R R R | operation-id R R R R R R | |||
| status-code R | status-code R | |||
| request-id R R R R R R R | request-id R R R R R R R | |||
| version-number R R R R R R R | version-number R R R R R R R | |||
| Operation attributes--REQUIRED to be supplied by the sender | Operation attributes--REQUIRED to be supplied by the sender: | |||
| attributes-charset R R R R R R R | attributes-charset R R R R R R R | |||
| attributes- R R R R R R R | attributes- R R R R R R R | |||
| natural-language | natural-language | |||
| document-uri R | ||||
| Expires November 30, 2000 | ||||
| Printer Operations | ||||
| Requests Respo | ||||
| nses | ||||
| Operation Print- Pri Crea Get- Get Pause- All | ||||
| Attributes Job, nt- te- Printer- - Printer Opera | ||||
| Validate URI Job Attribut Job , tions | ||||
| -Job (R) (O) (O) es (R) s Resume- | ||||
| (R) Printer | ||||
| , | ||||
| Purge- | ||||
| Printer | ||||
| (O+) | ||||
| document-uri R | ||||
| job-id* | job-id* | |||
| job-uri* | job-uri* | |||
| last-document | last-document | |||
| printer-uri R R R R R R | printer-uri R R R R R R | |||
| Operation attributes--RECOMMENDED to be supplied by the sender | Operation attributes--RECOMMENDED to be supplied by the sender: | |||
| job-name R R R | job-name R R R | |||
| requesting-user- R R R R R R | requesting-user- R R R R R R | |||
| name | name | |||
| Expires March 27, 2000 | ||||
| Table 2 - Summary of Printer operation attributes that sender MAY supply | Table 2 - Summary of Printer operation attributes that sender MAY supply | |||
| Printer Operations | Printer Operations | |||
| Requests Respo | Requests Respo | |||
| nses | nses | |||
| Operation Attributes Print- Prin Crea Get- Get Pause- All | Operation Attributes Print- Prin Crea Get- Get Pause- All | |||
| Job, t- te- Printer - Printer Opera | Job, t- te- Printer - Printer Opera | |||
| Valida URI Job - Job , tions | Valida URI Job - Job , tions | |||
| te-Job (O) (O) Attribu s Resume- | te-Job (O) (O) Attribu s Resume- | |||
| (R) tes (R) (R) Printer | (R) tes (R) (R) Printer | |||
| , | , | |||
| Purge- | Purge- | |||
| Printer | Printer | |||
| (O+) | (O+) | |||
| Operation attributes--OPTIONAL to be supplied by the sender | Operation attributes--OPTIONAL to be supplied by the sender: | |||
| status-message O | status-message O | |||
| detailed-status- O | detailed-status- O | |||
| message | message | |||
| document-access- O** | ||||
| error | ||||
| compression O O | compression O O | |||
| document-format R R O | document-format R R R | |||
| document-name O O | document-name O O | |||
| document-natural- O O | document-natural- O O | |||
| language | language | |||
| Expires November 30, 2000 | ||||
| Printer Operations | ||||
| Requests Respo | ||||
| nses | ||||
| Operation Attributes Print- Prin Crea Get- Get Pause- All | ||||
| Job, t- te- Printer - Printer Opera | ||||
| Valida URI Job - Job , tions | ||||
| te-Job (O) (O) Attribu s Resume- | ||||
| (R) tes (R) (R) Printer | ||||
| , | ||||
| Purge- | ||||
| Printer | ||||
| (O+) | ||||
| ipp-attribute- R R R | ipp-attribute- R R R | |||
| fidelity | fidelity | |||
| job-impressions O O O | job-impressions O O O | |||
| job-k-octets O O O | job-k-octets O O O | |||
| job-media-sheets O O O | job-media-sheets O O O | |||
| limit R | limit R | |||
| message | message | |||
| my-jobs R | my-jobs R | |||
| requested-attributes R R | requested-attributes R R | |||
| which-jobs R | which-jobs R | |||
| * "job-id" is REQUIRED only if used together with "printer-uri" to | * "job-id" is REQUIRED only if used together with "printer-uri" to | |||
| identify the target job; otherwise, "job-uri" is REQUIRED. | identify the target job; otherwise, "job-uri" is REQUIRED. | |||
| ** "document-access-error" applies to the Print-URI response only. | ||||
| Expires March 27, 2000 | Expires November 30, 2000 | |||
| Table 3 - Summary of Job operation attributes that sender MUST supply | Table 3 - Summary of Job operation attributes that sender MUST supply | |||
| Job Operations | Job Operations | |||
| Requests Respons | Requests Respons | |||
| es | es | |||
| Operation Attributes Send- Send Cance Get- Hold- All | Operation Attributes Send- Send Cance Get- Hold- All | |||
| Docume -URI l-Job Job- Job, Operati | Docume -URI l-Job Job- Job, Operati | |||
| nt (O) (R) Attrib Release ons | nt (O) (R) Attrib Release ons | |||
| (O) utes -Job, | (O) utes -Job, | |||
| (R) Restart | (R) Restart | |||
| -Job | -Job | |||
| (O+) | (O+) | |||
| Operation parameters--REQUIRED to be supplied by the sender | Operation parameters--REQUIRED to be supplied by the sender: | |||
| operation-id R R R R R | operation-id R R R R R | |||
| status-code R | status-code R | |||
| request-id R R R R R R | request-id R R R R R R | |||
| version-number R R R R R R | version-number R R R R R R | |||
| Operation attributes--REQUIRED to be supplied by the sender | Operation attributes--REQUIRED to be supplied by the sender: | |||
| attributes-charset R R R R R R | attributes-charset R R R R R R | |||
| attributes-natural- R R R R R R | attributes-natural- R R R R R R | |||
| language | language | |||
| document-uri R | document-uri R | |||
| job-id* R R R R R | job-id* R R R R R | |||
| job-uri* R R R R R | job-uri* R R R R R | |||
| last-document R R | last-document R R | |||
| printer-uri R R R R R | printer-uri R R R R R | |||
| Operation attributes--RECOMMENDED to be supplied by the sender | Operation attributes--RECOMMENDED to be supplied by the sender: | |||
| job-name | job-name | |||
| requesting-user-name R R R R R | requesting-user-name R R R R R | |||
| Expires March 27, 2000 | Expires November 30, 2000 | |||
| Table 4 - Summary of Job operation attributes that sender MAY supply | Table 4 - Summary of Job operation attributes that sender MAY supply | |||
| Job Operations | Job Operations | |||
| Requests Respo | Requests Respo | |||
| nses | nses | |||
| Operation Attributes Send- Sen Cance Get- Hold- Relea All | Operation Attributes Send- Sen Cance Get- Hold- Relea All | |||
| Documen d- l-Job Job- Job, se- Opera | Documen d- l-Job Job- Job, se- Opera | |||
| t URI (R) Attrib Restar Job tions | t URI (R) Attrib Restar Job tions | |||
| (O) (O) utes t-Job (O+) | (O) (O) utes t-Job (O+) | |||
| (R) (O+) | (R) (O+) | |||
| Operation attributes--OPTIONAL to be supplied by the sender | Operation attributes--OPTIONAL to be supplied by the sender: | |||
| status-message O | status-message O | |||
| detailed-status- O | detailed-status- O | |||
| message | message | |||
| document-access-error O** | document-access-error O** | |||
| compression O O | compression O O | |||
| document-format R R | document-format R R | |||
| document-name O O | document-name O O | |||
| document-natural- O O | document-natural- O O | |||
| language | language | |||
| ipp-attribute- | ipp-attribute- | |||
| fidelity | fidelity | |||
| job-impressions | job-impressions | |||
| job-k-octets | job-k-octets | |||
| job-media-sheets | job-media-sheets | |||
| limit | limit | |||
| message O O O | message O O O | |||
| job-hold-until R | job-hold-until R | |||
| my-jobs | my-jobs | |||
| requested-attributes R | requested-attributes R | |||
| which-jobs | which-jobs | |||
| * "job-id" is REQUIRED only if used together with "printer-uri" to | * "job-id" is REQUIRED only if used together with "printer-uri" to | |||
| identify the target job; otherwise, "job-uri" is REQUIRED. | identify the target job; otherwise, "job-uri" is REQUIRED. | |||
| ** "document-access-error" applies to the Send-URI operation only. | ** "document-access-error" applies to the Send-URI operation only. | |||
| Expires March 27, 2000 | Expires November 30, 2000 | |||
| Table 5 - Printer operation response attributes | Table 5 - Printer operation response attributes | |||
| Printer Operations | Printer Operations | |||
| Response | Response | |||
| Operation Prin Valida Prin Crea Get- Get- Pause- | Operation Print- Validat Prin Create Get- Get- Pause- | |||
| Attributes t- te-Job t- te- Printer Jobs Printer, | Attributes Job e-Job t- -Job Printe Jobs Printer | |||
| Job (R) URI Job - (R) Resume- | (R),Send (R) URI (O) r- (R) , | |||
| (R) (O) (O) Attribu Printer, | - (O), Attrib Resume- | |||
| tes (R) Purge- | Document Send utes Printer | |||
| Printer | (O) -URI (R) , | |||
| (O+) | (O) Purge- | |||
| job-uri R R R | Printer | |||
| job-id R R R | (O+) | |||
| job-state R R R | job-uri R R R | |||
| job-state-reasons R+ R+ R+ | job-id R R R | |||
| document-access- O | job-state R R R | |||
| error+ | job-state- R+ R+ R+ | |||
| reasons | ||||
| number-of- O O O | ||||
| intervening- | ||||
| jobs | ||||
| document- O | ||||
| access-error+ | ||||
| 3.1.2Suggested Operation Processing Steps for IPP Objects (Issue 1.21) | Expires November 30, 2000 | |||
| 3.1.2 Suggested Operation Processing Steps for IPP Objects | ||||
| This section suggests the steps and error checks that an IPP object MAY | This section suggests the steps and error checks that an IPP object MAY | |||
| perform when processing requests and returning responses. An IPP object | perform when processing requests and returning responses. An IPP object | |||
| MAY perform some or all of the error checks. However, some | MAY perform some or all of the error checks. However, some | |||
| implementations MAY choose to be more forgiving than the error checks | implementations MAY choose to be more forgiving than the error checks | |||
| shown here, in order to be able to accept requests from non-conforming | shown here, in order to be able to accept requests from non-conforming | |||
| clients. Not performing all of these error checks is a so-called | clients. Not performing all of these error checks is a so-called | |||
| "forgiving" implementation. On the other hand, clients that | "forgiving" implementation. On the other hand, clients that | |||
| successfully submit requests to IPP objects that do perform all the | successfully submit requests to IPP objects that do perform all the | |||
| error checks will be more likely to be able to interoperate with other | error checks will be more likely to be able to interoperate with other | |||
| skipping to change at page 13, line 5 ¶ | skipping to change at page 16, line 41 ¶ | |||
| indicated here in order to be a conforming client. Therefore, a client | indicated here in order to be a conforming client. Therefore, a client | |||
| SHOULD supply requests that are conforming, in order to avoid being | SHOULD supply requests that are conforming, in order to avoid being | |||
| rejected by some IPP object implementations and/or risking different | rejected by some IPP object implementations and/or risking different | |||
| semantics by different implementations of forgiving implementations. | semantics by different implementations of forgiving implementations. | |||
| For example, a forgiving implementation that accepts multiple | For example, a forgiving implementation that accepts multiple | |||
| occurrences of the same attribute, rather than rejecting the request | occurrences of the same attribute, rather than rejecting the request | |||
| might use the first occurrences, while another might use the last | might use the first occurrences, while another might use the last | |||
| occurrence. Thus such a non-conforming client would get different | occurrence. Thus such a non-conforming client would get different | |||
| results from the two forgiving implementations. | results from the two forgiving implementations. | |||
| Expires March 27, 2000 | ||||
| In the following, processing continues step by step until a "RETURNS the | In the following, processing continues step by step until a "RETURNS the | |||
| xxx status code ." statement is encountered. Error returns are | xxx status code ..." statement is encountered. Error returns are | |||
| indicated by the verb: "REJECTS". Since clients have difficulty getting | indicated by the verb: "REJECTS". Since clients have difficulty getting | |||
| the status code before sending all of the document data in a Print-Job | the status code before sending all of the document data in a Print-Job | |||
| request, clients SHOULD use the Validate-Job operation before sending | request, clients SHOULD use the Validate-Job operation before sending | |||
| large documents to be printed, in order to validate whether the IPP | large documents to be printed, in order to validate whether the IPP | |||
| Printer will accept the job or not. | Printer will accept the job or not. | |||
| It is assumed that security authentication and authorization has already | It is assumed that security authentication and authorization has already | |||
| taken place at a lower layer. | taken place at a lower layer. | |||
| Expires March 27, 2000 | Expires November 30, 2000 | |||
| 3.1.2.1 Suggested Operation Processing Steps for all Operations | 3.1.2.1 Suggested Operation Processing Steps for all Operations | |||
| This section is intended to apply to all operations. The next section | This section is intended to apply to all operations. The next section | |||
| contains the additional steps for the Print-Job, Validate-Job, Print- | contains the additional steps for the Print-Job, Validate-Job, Print- | |||
| URI, Create-Job, Send-Document, and Send-URI operations that create | URI, Create-Job, Send-Document, and Send-URI operations that create | |||
| jobs, adds documents, and validates jobs. | jobs, adds documents, and validates jobs. | |||
| IIG Sect # Flow IPP error status codes | IIG Sect # Flow IPP error status codes | |||
| ---------- ---- ---------------------- | ---------- ---- ---------------------- | |||
| | | | | |||
| skipping to change at page 14, line 53 ¶ | skipping to change at page 18, line 4 ¶ | |||
| <operation attr> client-error-natural-language-not- | <operation attr> client-error-natural-language-not- | |||
| ok| supported | ok| supported | |||
| | client-error-request-value-too-long | | client-error-request-value-too-long | |||
| | client-error-attributes-or-values- | | client-error-attributes-or-values- | |||
| v not-supported | v not-supported | |||
| 3.1.2.1.1 Validate version number | 3.1.2.1.1 Validate version number | |||
| Every request and every response contains the "version-number" | Every request and every response contains the "version-number" | |||
| attribute. The value of this attribute is the major and minor version | attribute. The value of this attribute is the major and minor version | |||
| Expires November 30, 2000 | ||||
| number of the syntax and semantics that the client and IPP object is | number of the syntax and semantics that the client and IPP object is | |||
| using, respectively. The "version-number" attribute remains in a fixed | using, respectively. The "version-number" attribute remains in a fixed | |||
| position across all future versions so that all clients and IPP object | position across all future versions so that all clients and IPP object | |||
| that support future versions can determine which version is being used. | that support future versions can determine which version is being used. | |||
| The IPP object checks to see if the major version number supplied in the | The IPP object checks to see if the major version number supplied in the | |||
| request is supported. If not, the Printer object REJECTS the request | request is supported. If not, the Printer object REJECTS the request | |||
| Expires March 27, 2000 | ||||
| and RETURNS the 'server-error-version-not-supported' status code in the | and RETURNS the 'server-error-version-not-supported' status code in the | |||
| response. The IPP object returns in the "version-number" response | response. The IPP object returns in the "version-number" response | |||
| attribute the major and minor version for the error response. Thus the | attribute the major and minor version for the error response. Thus the | |||
| client can learn at least one major and minor version that the IPP | client can learn at least one major and minor version that the IPP | |||
| object supports. The IPP object is encouraged to return the closest | object supports. The IPP object is encouraged to return the closest | |||
| version number to the one supplied by the client. | version number to the one supplied by the client. | |||
| The checking of the minor version number is implementation dependent, | The checking of the minor version number is implementation dependent, | |||
| however if the client supplied minor version is explicitly supported, | however if the client supplied minor version is explicitly supported, | |||
| the IPP object MUST respond using that identical minor version number. | the IPP object MUST respond using that identical minor version number. | |||
| skipping to change at page 15, line 47 ¶ | skipping to change at page 19, line 5 ¶ | |||
| 1.3 yes (SHOULD) 1.2 | 1.3 yes (SHOULD) 1.2 | |||
| no (SHOULD NOT) 1.2 | no (SHOULD NOT) 1.2 | |||
| It is advantageous for Printers to support both IPP/1.1 and IPP/1.0, so | It is advantageous for Printers to support both IPP/1.1 and IPP/1.0, so | |||
| that they can interoperate with either client implementations. Some | that they can interoperate with either client implementations. Some | |||
| implementations may allow an Administrator to explicitly disable support | implementations may allow an Administrator to explicitly disable support | |||
| for one or the other by setting the "ipp-versions-supported" Printer | for one or the other by setting the "ipp-versions-supported" Printer | |||
| description attribute. | description attribute. | |||
| Expires November 30, 2000 | ||||
| Likewise, it is advantageous for clients to support both versions to | Likewise, it is advantageous for clients to support both versions to | |||
| allow interoperability with new and legacy Printers. | allow interoperability with new and legacy Printers. | |||
| 3.1.2.1.2 Validate operation identifier | 3.1.2.1.2 Validate operation identifier | |||
| The Printer object checks to see if the "operation-id" attribute | The Printer object checks to see if the "operation-id" attribute | |||
| supplied by the client is supported as indicated in the Printer object's | supplied by the client is supported as indicated in the Printer object's | |||
| "operations-supported" attribute. If not, the Printer REJECTS the | "operations-supported" attribute. If not, the Printer REJECTS the | |||
| request and returns the 'server-error-operation-not-supported' status | request and returns the 'server-error-operation-not-supported' status | |||
| code in the response. | code in the response. | |||
| Expires March 27, 2000 | ||||
| 3.1.2.1.3 Validate the request identifier | 3.1.2.1.3 Validate the request identifier | |||
| The Printer object SHOULD NOT check to see if the "request-id" attribute | The Printer object SHOULD NOT check to see if the "request-id" attribute | |||
| supplied by the client is in range: between 1 and 2**31 - 1 (inclusive), | supplied by the client is in range: between 1 and 2**31 - 1 (inclusive), | |||
| but copies all 32 bits. | but copies all 32 bits. | |||
| Note: The "version-number", "operation-id", and the "request-id" | Note: The "version-number", "operation-id", and the "request-id" | |||
| parameters are in fixed octet positions in the IPP/1.1 encoding. The | parameters are in fixed octet positions in the IPP/1.1 encoding. The | |||
| "version-number" parameter will be the same fixed octet position in all | "version-number" parameter will be the same fixed octet position in all | |||
| versions of the protocol. These fields are validated before proceeding | versions of the protocol. These fields are validated before proceeding | |||
| with the rest of the validation. | with the rest of the validation. | |||
| 3.1.2.1.4 Validate attribute group and attribute presence and order | 3.1.2.1.4 Validate attribute group and attribute presence and order | |||
| The order of the following validation steps depends on implementation. | The order of the following validation steps depends on implementation. | |||
| 3.1.2.1.4.1 Validate the presence and order of attribute groups | 3.1.2.1.4.1 Validate the presence and order of attribute groups | |||
| Client requests and IPP object responses contain attribute groups that | Client requests and IPP object responses contain attribute groups that | |||
| Section 3 requires to be present and in a specified order. An IPP | Section 3 requires to be present and in a specified order. An IPP | |||
| object verifies that the attribute groups are present and in the correct | object verifies that the attribute groups are present and in the correct | |||
| order in requests supplied by clients (attribute groups without an * in | order in requests supplied by clients (attribute groups without an * in | |||
| the following tables). | the following tables). | |||
| If an IPP object receives a request with (1) required attribute groups | If an IPP object receives a request with (1) required attribute groups | |||
| missing, or (2) the attributes groups are out of order, or (3) the | missing, or (2) the attributes groups are out of order, or (3) the | |||
| groups are repeated, the IPP object REJECTS the request and RETURNS the | groups are repeated, the IPP object REJECTS the request and RETURNS the | |||
| 'client-error-bad-request' status code. For example, it is an error for | 'client-error-bad-request' status code. For example, it is an error for | |||
| the Job Template Attributes group to occur before the Operation | the Job Template Attributes group to occur before the Operation | |||
| Attributes group, for the Operation Attributes group to be omitted, or | Attributes group, for the Operation Attributes group to be omitted, or | |||
| for an attribute group to occur more than once, except in the Get-Jobs | for an attribute group to occur more than once, except in the Get-Jobs | |||
| response. | response. | |||
| Expires November 30, 2000 | ||||
| Since this kind of attribute group error is most likely to be an error | Since this kind of attribute group error is most likely to be an error | |||
| detected by a client developer rather than by a customer, the IPP object | detected by a client developer rather than by a customer, the IPP object | |||
| NEED NOT return an indication of which attribute group was in error in | NEED NOT return an indication of which attribute group was in error in | |||
| either the Unsupported Attributes group or the Status Message. Also, | either the Unsupported Attributes group or the Status Message. Also, | |||
| the IPP object NEED NOT find all attribute group errors before returning | the IPP object NEED NOT find all attribute group errors before returning | |||
| this error. | this error. | |||
| 3.1.2.1.4.2 Ignore unknown attribute groups in the expected position | 3.1.2.1.4.2 Ignore unknown attribute groups in the expected position | |||
| Future attribute groups may be added to the specification at the end of | Future attribute groups may be added to the specification at the end of | |||
| requests just before the Document Content and at the end of response, | requests just before the Document Content and at the end of response, | |||
| except for the Get-Jobs response, where it maybe there or before the | except for the Get-Jobs response, where it maybe there or before the | |||
| first job attributes returned. If an IPP object receives an unknown | first job attributes returned. If an IPP object receives an unknown | |||
| attribute group in these positions, it ignores the entire group, rather | attribute group in these positions, it ignores the entire group, rather | |||
| than returning an error, since that group may be a new group in a later | than returning an error, since that group may be a new group in a later | |||
| minor version of the protocol that can be ignored. (If the new | minor version of the protocol that can be ignored. (If the new | |||
| attribute group cannot be ignored without confusing the client, the | attribute group cannot be ignored without confusing the client, the | |||
| major version number would have been increased in the protocol document | major version number would have been increased in the protocol document | |||
| and in the request). If the unknown group occurs in a different | and in the request). If the unknown group occurs in a different | |||
| Expires March 27, 2000 | ||||
| position, the IPP object REJECTS the request and RETURNS the 'client- | position, the IPP object REJECTS the request and RETURNS the 'client- | |||
| error-bad-request' status code. | error-bad-request' status code. | |||
| Clients also ignore unknown attribute groups returned in a response. | Clients also ignore unknown attribute groups returned in a response. | |||
| Note: By validating that requests are in the proper form, IPP objects | Note: By validating that requests are in the proper form, IPP objects | |||
| force clients to use the proper form which, in turn, increases the | force clients to use the proper form which, in turn, increases the | |||
| chances that customers will be able to use such clients from multiple | chances that customers will be able to use such clients from multiple | |||
| vendors with IPP objects from other vendors. | vendors with IPP objects from other vendors. | |||
| 3.1.2.1.4.3 Validate the presence of a single occurrence of required | 3.1.2.1.4.3 Validate the presence of a single occurrence of required | |||
| Operation attributes | Operation attributes | |||
| Client requests and IPP object responses contain Operation attributes | Client requests and IPP object responses contain Operation attributes | |||
| that [IPP-MOD] Section 3 requires to be present. Attributes within a | that [IPP-MOD] Section 3 requires to be present. Attributes within a | |||
| group may be in any order, except for the ordering of target, charset, | group may be in any order, except for the ordering of target, charset, | |||
| and natural languages attributes. These attributes MUST be first, and | and natural languages attributes. These attributes MUST be first, and | |||
| MUST be supplied in the following order: charset, natural language, and | MUST be supplied in the following order: charset, natural language, and | |||
| then target. An IPP object verifies that the attributes that Section 4 | then target. An IPP object verifies that the attributes that Section 4 | |||
| requires to be supplied by the client have been supplied in the request | requires to be supplied by the client have been supplied in the request | |||
| (attributes without an * in the following tables). An asterisk (*) | (attributes without an * in the following tables). An asterisk (*) | |||
| indicates groups and Operation attributes that the client may omit in a | indicates groups and Operation attributes that the client may omit in a | |||
| request or an IPP object may omit in a response. | request or an IPP object may omit in a response. | |||
| If an IPP object receives a request with required attributes missing or | If an IPP object receives a request with required attributes missing or | |||
| repeated from a group or in the wrong position, the behavior of the IPP | repeated from a group or in the wrong position, the behavior of the IPP | |||
| object is IMPLEMENTATION DEPENDENT. Some of the possible | object is IMPLEMENTATION DEPENDENT. Some of the possible | |||
| implementations are: | implementations are: | |||
| 1.REJECTS the request and RETURNS the 'client-error-bad-request' status | Expires November 30, 2000 | |||
| code | 1. REJECTS the request and RETURNS the 'client-error-bad-request' | |||
| status code | ||||
| 2.accepts the request and uses the first occurrence of the attribute no | 2. accepts the request and uses the first occurrence of the attribute | |||
| matter where it is | no matter where it is | |||
| 3.accepts the request and uses the last occurrence of the attribute no | 3. accepts the request and uses the last occurrence of the attribute | |||
| matter where it is | no matter where it is | |||
| 4.accept the request and assume some default value for the missing | 4. accept the request and assume some default value for the missing | |||
| attribute | attribute | |||
| Therefore, client MUST send conforming requests, if they want to receive | Therefore, client MUST send conforming requests, if they want to receive | |||
| the same behavior from all IPP object implementations. For example, it | the same behavior from all IPP object implementations. For example, it | |||
| is an error for the "attributes-charset" or "attributes-natural- | is an error for the "attributes-charset" or "attributes-natural- | |||
| language" attribute to be omitted in any operation request, or for an | language" attribute to be omitted in any operation request, or for an | |||
| Operation attribute to be supplied in a Job Template group or a Job | Operation attribute to be supplied in a Job Template group or a Job | |||
| Template attribute to be supplied in an Operation Attribute group in a | Template attribute to be supplied in an Operation Attribute group in a | |||
| create request. It is also an error to supply the "attributes-charset" | create request. It is also an error to supply the "attributes-charset" | |||
| attribute twice. | attribute twice. | |||
| Since these kinds of attribute errors are most likely to be detected by | Since these kinds of attribute errors are most likely to be detected by | |||
| a client developer rather than by a customer, the IPP object NEED NOT | a client developer rather than by a customer, the IPP object NEED NOT | |||
| return an indication of which attribute was in error in either the | return an indication of which attribute was in error in either the | |||
| Expires March 27, 2000 | ||||
| Unsupported Attributes group or the Status Message. Also, the IPP | Unsupported Attributes group or the Status Message. Also, the IPP | |||
| object NEED NOT find all attribute errors before returning this error. | object NEED NOT find all attribute errors before returning this error. | |||
| The following tables list all the attributes for all the operations by | The following tables list all the attributes for all the operations by | |||
| attribute group in each request and each response. The order of the | attribute group in each request and each response. The order of the | |||
| groups is the order that the client supplies the groups as specified in | groups is the order that the client supplies the groups as specified in | |||
| [IPP-MOD] Section 3. The order of the attributes within a group is | [IPP-MOD] Section 3. The order of the attributes within a group is | |||
| arbitrary, except as noted for some of the special operation attributes | arbitrary, except as noted for some of the special operation attributes | |||
| (charset, natural language, and target). The tables below use the | (charset, natural language, and target). The tables below use the | |||
| following notation: | following notation: | |||
| skipping to change at page 18, line 31 ¶ | skipping to change at page 22, line 5 ¶ | |||
| * indicates that a client MAY omit the attribute in a request and | * indicates that a client MAY omit the attribute in a request and | |||
| that an IPP object MAY omit the attribute in a response. | that an IPP object MAY omit the attribute in a response. | |||
| The absence of an * means that a client MUST supply the | The absence of an * means that a client MUST supply the | |||
| attribute in a request and an IPP object MUST supply the | attribute in a request and an IPP object MUST supply the | |||
| attribute in a response. | attribute in a response. | |||
| + indicates that this is not a IPP/1.0 operation, but is only a part | + indicates that this is not a IPP/1.0 operation, but is only a part | |||
| of IPP/1.1 and future versions of IPP. | of IPP/1.1 and future versions of IPP. | |||
| Operation Requests | Operation Requests | |||
| Expires November 30, 2000 | ||||
| The tables below show the attributes in their proper attribute groups | The tables below show the attributes in their proper attribute groups | |||
| for operation requests: | for operation requests: | |||
| Note: All operation requests contain "version-number", "operation-id", | Note: All operation requests contain "version-number", "operation-id", | |||
| and "request-id" parameters. | and "request-id" parameters. | |||
| Print-Job Request (R): | Print-Job Request (R): | |||
| Group 1: Operation Attributes (R) | Group 1: Operation Attributes (R) | |||
| attributes-charset (R) | attributes-charset (R) | |||
| attributes-natural-language (R) | attributes-natural-language (R) | |||
| skipping to change at page 19, line 5 ¶ | skipping to change at page 22, line 34 ¶ | |||
| compression (O*) | compression (O*) | |||
| job-k-octets (O*) | job-k-octets (O*) | |||
| job-impressions (O*) | job-impressions (O*) | |||
| job-media-sheets (O*) | job-media-sheets (O*) | |||
| Group 2: Job Template Attributes (R*) | Group 2: Job Template Attributes (R*) | |||
| <Job Template attributes> (O*) | <Job Template attributes> (O*) | |||
| (see [IPP-MOD] Section 4.2) | (see [IPP-MOD] Section 4.2) | |||
| Group 3: Document Content (R) | Group 3: Document Content (R) | |||
| <document content> | <document content> | |||
| Expires March 27, 2000 | ||||
| Validate-Job Request (R): | Validate-Job Request (R): | |||
| Group 1: Operation Attributes (R) | Group 1: Operation Attributes (R) | |||
| attributes-charset (R) | attributes-charset (R) | |||
| attributes-natural-language (R) | attributes-natural-language (R) | |||
| printer-uri (R) | printer-uri (R) | |||
| requesting-user-name (R*) | requesting-user-name (R*) | |||
| job-name (R*) | job-name (R*) | |||
| ipp-attribute-fidelity (R*) | ipp-attribute-fidelity (R*) | |||
| document-name (R*) | document-name (R*) | |||
| document-format (R*) | document-format (R*) | |||
| document-natural-language (O*) | document-natural-language (O*) | |||
| compression (O*) | compression (O*) | |||
| job-k-octets (O*) | job-k-octets (O*) | |||
| job-impressions (O*) | job-impressions (O*) | |||
| job-media-sheets (O*) | job-media-sheets (O*) | |||
| Group 2: Job Template Attributes (R*) | Group 2: Job Template Attributes (R*) | |||
| <Job Template attributes> (O*) | <Job Template attributes> (O*) | |||
| (see [IPP-MOD] Section 4.2) | (see [IPP-MOD] Section 4.2) | |||
| Expires November 30, 2000 | ||||
| Print-URI Request (O): | Print-URI Request (O): | |||
| Group 1: Operation Attributes (R) | Group 1: Operation Attributes (R) | |||
| attributes-charset (R) | attributes-charset (R) | |||
| attributes-natural-language (R) | attributes-natural-language (R) | |||
| printer-uri (R) | printer-uri (R) | |||
| document-uri (R) | document-uri (R) | |||
| requesting-user-name (R*) | requesting-user-name (R*) | |||
| job-name (R*) | job-name (R*) | |||
| ipp-attribute-fidelity (R*) | ipp-attribute-fidelity (R*) | |||
| document-name (R*) | document-name (R*) | |||
| skipping to change at page 20, line 5 ¶ | skipping to change at page 23, line 42 ¶ | |||
| requesting-user-name (R*) | requesting-user-name (R*) | |||
| job-name (R*) | job-name (R*) | |||
| ipp-attribute-fidelity (R*) | ipp-attribute-fidelity (R*) | |||
| job-k-octets (O*) | job-k-octets (O*) | |||
| job-impressions (O*) | job-impressions (O*) | |||
| job-media-sheets (O*) | job-media-sheets (O*) | |||
| Group 2: Job Template Attributes (R*) | Group 2: Job Template Attributes (R*) | |||
| <Job Template attributes> (O*) (see | <Job Template attributes> (O*) (see | |||
| (see [IPP-MOD] Section 4.2) | (see [IPP-MOD] Section 4.2) | |||
| Expires March 27, 2000 | ||||
| Get-Printer-Attributes Request (R): | Get-Printer-Attributes Request (R): | |||
| Group 1: Operation Attributes (R) | Group 1: Operation Attributes (R) | |||
| attributes-charset (R) | attributes-charset (R) | |||
| attributes-natural-language (R) | attributes-natural-language (R) | |||
| printer-uri (R) | printer-uri (R) | |||
| requesting-user-name (R*) | requesting-user-name (R*) | |||
| requested-attributes (R*) | requested-attributes (R*) | |||
| document-format (R*) | document-format (R*) | |||
| Get-Jobs Request (R): | Get-Jobs Request (R): | |||
| Group 1: Operation Attributes (R) | Group 1: Operation Attributes (R) | |||
| attributes-charset (R) | attributes-charset (R) | |||
| attributes-natural-language (R) | attributes-natural-language (R) | |||
| Expires November 30, 2000 | ||||
| printer-uri (R) | printer-uri (R) | |||
| requesting-user-name (R*) | requesting-user-name (R*) | |||
| limit (R*) | limit (R*) | |||
| requested-attributes (R*) | requested-attributes (R*) | |||
| which-jobs (R*) | which-jobs (R*) | |||
| my-jobs (R*) | my-jobs (R*) | |||
| Send-Document Request (O): | Send-Document Request (O): | |||
| Group 1: Operation Attributes (R) | Group 1: Operation Attributes (R) | |||
| attributes-charset (R) | attributes-charset (R) | |||
| skipping to change at page 21, line 4 ¶ | skipping to change at page 24, line 47 ¶ | |||
| document-natural-language (O*) | document-natural-language (O*) | |||
| compression (O*) | compression (O*) | |||
| Cancel-Job Request (R): | Cancel-Job Request (R): | |||
| Release-Job Request (O+): | Release-Job Request (O+): | |||
| Group 1: Operation Attributes (R) | Group 1: Operation Attributes (R) | |||
| attributes-charset (R) | attributes-charset (R) | |||
| attributes-natural-language (R) | attributes-natural-language (R) | |||
| (printer-uri & job-id) | job-uri (R) | (printer-uri & job-id) | job-uri (R) | |||
| requesting-user-name (R*) | requesting-user-name (R*) | |||
| Expires March 27, 2000 | ||||
| message (O*) | message (O*) | |||
| Get-Job-Attributes Request (R): | Get-Job-Attributes Request (R): | |||
| Group 1: Operation Attributes (R) | Group 1: Operation Attributes (R) | |||
| attributes-charset (R) | attributes-charset (R) | |||
| attributes-natural-language (R) | attributes-natural-language (R) | |||
| (printer-uri & job-id) | job-uri (R) | (printer-uri & job-id) | job-uri (R) | |||
| Expires November 30, 2000 | ||||
| requesting-user-name (R*) | requesting-user-name (R*) | |||
| requested-attributes (R*) | requested-attributes (R*) | |||
| Pause-Printer Request (O+): | Pause-Printer Request (O+): | |||
| Resume-Printer Request (O+): | Resume-Printer Request (O+): | |||
| Purge-Printer Request (O+): | Purge-Printer Request (O+): | |||
| Group 1: Operation Attributes (R) | Group 1: Operation Attributes (R) | |||
| attributes-charset (R) | attributes-charset (R) | |||
| attributes-natural-language (R) | attributes-natural-language (R) | |||
| printer-uri (R) | printer-uri (R) | |||
| skipping to change at page 22, line 4 ¶ | skipping to change at page 25, line 52 ¶ | |||
| status-message (O*) | status-message (O*) | |||
| detailed-status-message (O*) | detailed-status-message (O*) | |||
| Group 2: Unsupported Attributes (R*) (see Note 3) | Group 2: Unsupported Attributes (R*) (see Note 3) | |||
| <unsupported attributes> (R*) | <unsupported attributes> (R*) | |||
| Group 3: Job Object Attributes(R*) (see Note 2) | Group 3: Job Object Attributes(R*) (see Note 2) | |||
| job-uri (R) | job-uri (R) | |||
| job-id (R) | job-id (R) | |||
| job-state (R) | job-state (R) | |||
| job-state-reasons (O* | R+) | job-state-reasons (O* | R+) | |||
| job-state-message (O*) | job-state-message (O*) | |||
| Expires March 27, 2000 | ||||
| number-of-intervening-jobs (O*) | number-of-intervening-jobs (O*) | |||
| Expires November 30, 2000 | ||||
| Validate-Job Response (R): | Validate-Job Response (R): | |||
| Cancel-Job Response (R): | Cancel-Job Response (R): | |||
| Hold-Job Response (O+): | Hold-Job Response (O+): | |||
| Release-Job Response (O+): | Release-Job Response (O+): | |||
| Restart-Job Response (O+): | Restart-Job Response (O+): | |||
| Group 1: Operation Attributes (R) | Group 1: Operation Attributes (R) | |||
| attributes-charset (R) | attributes-charset (R) | |||
| attributes-natural-language (R) | attributes-natural-language (R) | |||
| status-message (O*) | status-message (O*) | |||
| detailed-status-message (O*) | detailed-status-message (O*) | |||
| skipping to change at page 22, line 55 ¶ | skipping to change at page 27, line 4 ¶ | |||
| Group 2: Unsupported Attributes (R*) (see Note 4) | Group 2: Unsupported Attributes (R*) (see Note 4) | |||
| <unsupported attributes> (R*) | <unsupported attributes> (R*) | |||
| Group 3: Printer Object Attributes(R*) (see Note 2) | Group 3: Printer Object Attributes(R*) (see Note 2) | |||
| <requested attributes> (R*) | <requested attributes> (R*) | |||
| Get-Jobs Response (R): | Get-Jobs Response (R): | |||
| Group 1: Operation Attributes (R) | Group 1: Operation Attributes (R) | |||
| attributes-charset (R) | attributes-charset (R) | |||
| attributes-natural-language (R) | attributes-natural-language (R) | |||
| status-message (O*) | status-message (O*) | |||
| Expires November 30, 2000 | ||||
| detailed-status-message (O*) | detailed-status-message (O*) | |||
| Group 2: Unsupported Attributes (R*) (see Note 4) | Group 2: Unsupported Attributes (R*) (see Note 4) | |||
| <unsupported attributes> (R*) | <unsupported attributes> (R*) | |||
| Group 3: Job Object Attributes(R*) (see Note 2, 5) | Group 3: Job Object Attributes(R*) (see Note 2, 5) | |||
| <requested attributes> (R*) | <requested attributes> (R*) | |||
| Expires March 27, 2000 | ||||
| Get-Job-Attributes Response (R): | Get-Job-Attributes Response (R): | |||
| Group 1: Operation Attributes (R) | Group 1: Operation Attributes (R) | |||
| attributes-charset (R) | attributes-charset (R) | |||
| attributes-natural-language (R) | attributes-natural-language (R) | |||
| status-message (O*) | status-message (O*) | |||
| detailed-status-message (O*) | detailed-status-message (O*) | |||
| Group 2: Unsupported Attributes (R*) (see Note 4) | Group 2: Unsupported Attributes (R*) (see Note 4) | |||
| <unsupported attributes> (R*) | <unsupported attributes> (R*) | |||
| Group 3: Job Object Attributes(R*) (see Note 2) | Group 3: Job Object Attributes(R*) (see Note 2) | |||
| <requested attributes> (R*) | <requested attributes> (R*) | |||
| skipping to change at page 23, line 48 ¶ | skipping to change at page 28, line 4 ¶ | |||
| whether a success or an error return. | whether a success or an error return. | |||
| Note 5: for the Get-Jobs operation the response contains a separate Job | Note 5: for the Get-Jobs operation the response contains a separate Job | |||
| Object Attributes group 3 to N containing requested-attributes for each | Object Attributes group 3 to N containing requested-attributes for each | |||
| job object in the response. | job object in the response. | |||
| 3.1.2.1.5 Validate the values of the REQUIRED Operation attributes | 3.1.2.1.5 Validate the values of the REQUIRED Operation attributes | |||
| An IPP object validates the values supplied by the client of the | An IPP object validates the values supplied by the client of the | |||
| REQUIRED Operation attribute that the IPP object MUST support. The next | REQUIRED Operation attribute that the IPP object MUST support. The next | |||
| Expires November 30, 2000 | ||||
| section specifies the validation of the values of the OPTIONAL Operation | section specifies the validation of the values of the OPTIONAL Operation | |||
| attributes that IPP objects MAY support. | attributes that IPP objects MAY support. | |||
| The IPP object performs the following syntactic validation checks of | The IPP object performs the following syntactic validation checks of | |||
| each Operation attribute value: | each Operation attribute value: | |||
| a) that the length of each Operation attribute value is correct for | a) that the length of each Operation attribute value is correct for | |||
| the attribute syntax tag supplied by the client according to [IPP- | the attribute syntax tag supplied by the client according to [IPP- | |||
| MOD] Section 4.1, | MOD] Section 4.1, | |||
| Expires March 27, 2000 | ||||
| b) that the attribute syntax tag is correct for that Operation | b) that the attribute syntax tag is correct for that Operation | |||
| attribute according to [IPP-MOD] Section 3, | attribute according to [IPP-MOD] Section 3, | |||
| c) that the value is in the range specified for that Operation | c) that the value is in the range specified for that Operation | |||
| attribute according to [IPP-MOD] Section 3, | attribute according to [IPP-MOD] Section 3, | |||
| d) that multiple values are supplied by the client only for | d) that multiple values are supplied by the client only for | |||
| operation attributes that are multi-valued, i.e., that are 1setOf X | operation attributes that are multi-valued, i.e., that are 1setOf X | |||
| according to [IPP-MOD] Section 3. | according to [IPP-MOD] Section 3. | |||
| skipping to change at page 24, line 39 ¶ | skipping to change at page 28, line 48 ¶ | |||
| not among those supported or is not in the range supported, then the IPP | not among those supported or is not in the range supported, then the IPP | |||
| object REJECTS the request and RETURNS the error status code indicated | object REJECTS the request and RETURNS the error status code indicated | |||
| in the table by the second IF statement. If the value of the Printer | in the table by the second IF statement. If the value of the Printer | |||
| object's "xxx-supported" attribute is 'no-value' (because the system | object's "xxx-supported" attribute is 'no-value' (because the system | |||
| administrator hasn't configured a value), the check always fails. | administrator hasn't configured a value), the check always fails. | |||
| ----------------------------------------------- | ----------------------------------------------- | |||
| attributes-charset (charset) | attributes-charset (charset) | |||
| IF NOT a single non-empty 'charset' value, REJECT/RETURN 'client- | IF NOT a single non-empty 'charset' value, REJECT/RETURN 'client- | |||
| error-bad-request'. | error-bad-request'. | |||
| IF the value length is greater than 63 octets, REJECT/RETURN 'client- | IF the value length is greater than 63 octets, REJECT/RETURN | |||
| error-request-value-too-long'. | 'client-error-request-value-too-long'. | |||
| IF NOT in the Printer object's "charset-supported" attribute, | ||||
| REJECT/RETURN "client-error-charset-not-supported". | Expires November 30, 2000 | |||
| IF NOT in the Printer object's "charset-supported" attribute, | ||||
| REJECT/RETURN "client-error-charset-not-supported". | ||||
| attributes-natural-language(naturalLanguage) | attributes-natural-language(naturalLanguage) | |||
| IF NOT a single non-empty 'naturalLanguage' value, REJECT/RETURN | IF NOT a single non-empty 'naturalLanguage' value, REJECT/RETURN | |||
| 'client-error-bad-request'. | 'client-error-bad-request'. | |||
| IF the value length is greater than 63 octets, REJECT/RETURN 'client- | IF the value length is greater than 63 octets, REJECT/RETURN | |||
| error-request-value-too-long'. | 'client-error-request-value-too-long'. | |||
| ACCEPT the request even if not a member of the set in the Printer | ACCEPT the request even if not a member of the set in the Printer | |||
| object's "generated-natural-language-supported" attribute. If the | object's "generated-natural-language-supported" attribute. If | |||
| supplied value is not a member of the Printer object's "generated- | the supplied value is not a member of the Printer object's | |||
| natural-language-supported" attribute, use the Printer object's | "generated-natural-language-supported" attribute, use the | |||
| "natural-language-configured" value. | Printer object's "natural-language-configured" value. | |||
| requesting-user-name | requesting-user-name | |||
| Expires March 27, 2000 | IF NOT a single 'name' value, REJECT/RETURN 'client-error-bad- | |||
| IF NOT a single 'name' value, REJECT/RETURN 'client-error-bad- | request'. | |||
| request'. | IF the value length is greater than 255 octets, REJECT/RETURN | |||
| IF the value length is greater than 255 octets, REJECT/RETURN | 'client-error-request-value-too-long'. | |||
| 'client-error-request-value-too-long'. | IF the IPP object can obtain a better-authenticated name, use it | |||
| IF the IPP object can obtain a better-authenticated name, use it | instead. | |||
| instead. | ||||
| job-name(name) | job-name(name) | |||
| IF NOT a single 'name' value, REJECT/RETURN 'client-error-bad- | IF NOT a single 'name' value, REJECT/RETURN 'client-error-bad- | |||
| request'. | request'. | |||
| IF the value length is greater than 255 octets, REJECT/RETURN | IF the value length is greater than 255 octets, REJECT/RETURN | |||
| 'client-error-request-value-too-long'. | 'client-error-request-value-too-long'. | |||
| IF NOT supplied by the client, the Printer object creates a name from | IF NOT supplied by the client, the Printer object creates a name | |||
| the document-name or document-uri. | from the document-name or document-uri. | |||
| document-name (name) | document-name (name) | |||
| IF NOT a single 'name' value, REJECT/RETURN 'client-error-bad- | IF NOT a single 'name' value, REJECT/RETURN 'client-error-bad- | |||
| request'. | request'. | |||
| IF the value length is greater than 255 octets, REJECT/RETURN | IF the value length is greater than 255 octets, REJECT/RETURN | |||
| 'client-error-request-value-too-long'. | 'client-error-request-value-too-long'. | |||
| ipp-attribute-fidelity (boolean) | ipp-attribute-fidelity (boolean) | |||
| IF NEITHER a single 'true' NOR a single 'false' 'boolean' value, | IF NEITHER a single 'true' NOR a single 'false' 'boolean' value, | |||
| REJECT/RETURN 'client-error-bad-request'. | REJECT/RETURN 'client-error-bad-request'. | |||
| IF the value length is NOT equal to 1 octet, REJECT/RETURN 'client- | IF the value length is NOT equal to 1 octet, REJECT/RETURN 'client- | |||
| error-request-value-too-long' | error-request-value-too-long' | |||
| IF NOT supplied by the client, the IPP object assumes the value | IF NOT supplied by the client, the IPP object assumes the value | |||
| 'false'. | 'false'. | |||
| Expires November 30, 2000 | ||||
| document-format (mimeMediaType) | document-format (mimeMediaType) | |||
| IF NOT a single non-empty 'mimeMediaType' value, REJECT/RETURN | IF NOT a single non-empty 'mimeMediaType' value, REJECT/RETURN | |||
| 'client-error-bad-request'. | 'client-error-bad-request'. | |||
| IF the value length is greater than 255 octets, REJECT/RETURN | IF the value length is greater than 255 octets, REJECT/RETURN | |||
| 'client-error-request-value-too-long'. | 'client-error-request-value-too-long'. | |||
| IF NOT in the Printer object's "document-format-supported" attribute, | IF NOT in the Printer object's "document-format-supported" | |||
| REJECT/RETURN 'client-error-document-format-not-supported' | attribute, REJECT/RETURN 'client-error-document-format-not- | |||
| IF NOT supplied by the client, the IPP object assumes the value of | supported' | |||
| the Printer object's "document-format-default" attribute. | IF NOT supplied by the client, the IPP object assumes the value of | |||
| the Printer object's "document-format-default" attribute. | ||||
| document-uri (uri) | document-uri (uri) | |||
| IF NOT a single non-empty 'uri' value, REJECT/RETURN 'client-error- | IF NOT a single non-empty 'uri' value, REJECT/RETURN 'client-error- | |||
| bad-request'. | bad-request'. | |||
| IF the value length is greater than 1023 octets, REJECT/RETURN | IF the value length is greater than 1023 octets, REJECT/RETURN | |||
| 'client-error-request-value-too-long'. | 'client-error-request-value-too-long'. | |||
| IF the URI syntax is not valid, REJECT/RETURN 'client-error-bad- | IF the URI syntax is not valid, REJECT/RETURN 'client-error-bad- | |||
| request'. | request'. | |||
| If the client-supplied URI scheme is not supported, i.e. the value is | If the client-supplied URI scheme is not supported, i.e. the value | |||
| not in the Printer object's referenced-uri-scheme-supported" | is not in the Printer object's referenced-uri-scheme- | |||
| attribute, the Printer object MUST reject the request and return | supported" attribute, the Printer object MUST reject the | |||
| request and return the 'client-error-uri-scheme-not-supported' | ||||
| Expires March 27, 2000 | status code. The Printer object MAY check to see if the | |||
| the 'client-error-uri-scheme-not-supported' status code. The | document exists and is accessible. If the document is not | |||
| Printer object MAY check to see if the document exists and is | found or is not accessible, REJECT/RETURN 'client-error-not | |||
| accessible. If the document is not found or is not accessible, | found'. | |||
| REJECT/RETURN 'client-error-not found'. | last-document (boolean) | |||
| IF NEITHER a single 'true' NOR a single 'false' 'boolean' value, | ||||
| last-document (boolean) | REJECT/RETURN 'client-error-bad-request'. | |||
| IF the value length is NOT equal to 1 octet, REJECT/RETURN 'client- | ||||
| IF NEITHER a single 'true' NOR a single 'false' 'boolean' value, | error-request-value-too-long' | |||
| REJECT/RETURN 'client-error-bad-request'. | ||||
| IF the value length is NOT equal to 1 octet, REJECT/RETURN 'client- | ||||
| error-request-value-too-long' | ||||
| job-id (integer(1:MAX)) | job-id (integer(1:MAX)) | |||
| IF NOT an single 'integer' value equal to 4 octets AND in the range 1 | IF NOT an single 'integer' value equal to 4 octets AND in the range | |||
| to MAX, REJECT/RETURN 'client-error-bad-request'. | 1 to MAX, REJECT/RETURN 'client-error-bad-request'. | |||
| IF NOT a job-id of an existing Job object, REJECT/RETURN 'client- | IF NOT a job-id of an existing Job object, REJECT/RETURN 'client- | |||
| error-not-found' or 'client-error-gone' status code, if keep track | error-not-found' or 'client-error-gone' status code, if keep | |||
| of recently deleted jobs. | track of recently deleted jobs. | |||
| requested-attributes (1setOf keyword) | requested-attributes (1setOf keyword) | |||
| IF NOT one or more 'keyword' values, REJECT/RETURN 'client-error-bad- | IF NOT one or more 'keyword' values, REJECT/RETURN 'client-error- | |||
| request'. | bad-request'. | |||
| IF the value length is greater than 255 octets, REJECT/RETURN | ||||
| 'client-error-request-value-too-long'. | Expires November 30, 2000 | |||
| Ignore unsupported values, which are the keyword names of unsupported | ||||
| attributes. Don't bother to copy such requested (unsupported) | IF the value length is greater than 255 octets, REJECT/RETURN | |||
| attributes to the Unsupported Attribute response group since the | 'client-error-request-value-too-long'. | |||
| response will not return them. | Ignore unsupported values, which are the keyword names of | |||
| unsupported attributes. Don't bother to copy such requested | ||||
| (unsupported) attributes to the Unsupported Attribute response | ||||
| group since the response will not return them. | ||||
| which-jobs (type2 keyword) | which-jobs (type2 keyword) | |||
| IF NOT a single 'keyword' value, REJECT/RETURN 'client-error-bad- | IF NOT a single 'keyword' value, REJECT/RETURN 'client-error-bad- | |||
| request'. | request'. | |||
| IF the value length is greater than 255 octets, REJECT/RETURN | IF the value length is greater than 255 octets, REJECT/RETURN | |||
| 'client-error-request-value-too-long'. | 'client-error-request-value-too-long'. | |||
| IF NEITHER 'completed' NOR 'not-completed', copy the attribute and | IF NEITHER 'completed' NOR 'not-completed', copy the attribute and | |||
| the unsupported value to the Unsupported Attributes response group | the unsupported value to the Unsupported Attributes response | |||
| and REJECT/RETURN 'client-error-attributes-or-values-not- | group and REJECT/RETURN 'client-error-attributes-or-values- | |||
| supported'. | not-supported'. | |||
| Note: a Printer still supports the 'completed' value even if it keeps | Note: a Printer still supports the 'completed' value even if it | |||
| no completed/canceled/aborted jobs: by returning no jobs when so | keeps no completed/canceled/aborted jobs: by returning no | |||
| queried. | jobs when so queried. | |||
| IF NOT supplied by the client, the IPP object assumes the 'not- | IF NOT supplied by the client, the IPP object assumes the 'not- | |||
| completed' value. | completed' value. | |||
| my-jobs (boolean) | my-jobs (boolean) | |||
| IF NEITHER a single 'true' NOR a single 'false' 'boolean' value, | IF NEITHER a single 'true' NOR a single 'false' 'boolean' value, | |||
| REJECT/RETURN 'client-error-bad-request'. | REJECT/RETURN 'client-error-bad-request'. | |||
| IF the value length is NOT equal to 1 octet, REJECT/RETURN 'client- | IF the value length is NOT equal to 1 octet, REJECT/RETURN 'client- | |||
| error-request-value-too-long' | error-request-value-too-long' | |||
| IF NOT supplied by the client, the IPP object assumes the 'false' | IF NOT supplied by the client, the IPP object assumes the 'false' | |||
| value. | value. | |||
| Expires March 27, 2000 | ||||
| limit (integer(1:MAX)) | limit (integer(1:MAX)) | |||
| IF NOT a single 'integer' value equal to 4 octets AND in the range 1 | IF NOT a single 'integer' value equal to 4 octets AND in the range | |||
| to MAX, REJECT/RETURN 'client-error-bad-request'. | 1 to MAX, REJECT/RETURN 'client-error-bad-request'. | |||
| IF NOT supplied by the client, the IPP object returns all jobs, no | IF NOT supplied by the client, the IPP object returns all jobs, no | |||
| matter how many. | matter how many. | |||
| ----------------------------------------------- | ----------------------------------------------- | |||
| 3.1.2.1.6 Validate the values of the OPTIONAL Operation attributes | 3.1.2.1.6 Validate the values of the OPTIONAL Operation attributes | |||
| OPTIONAL Operation attributes are those that an IPP object MAY or MAY | OPTIONAL Operation attributes are those that an IPP object MAY or MAY | |||
| NOT support. An IPP object validates the values of the OPTIONAL | NOT support. An IPP object validates the values of the OPTIONAL | |||
| attributes supplied by the client. The IPP object performs the same | attributes supplied by the client. The IPP object performs the same | |||
| Expires November 30, 2000 | ||||
| syntactic validation checks for each OPTIONAL attribute value as in | syntactic validation checks for each OPTIONAL attribute value as in | |||
| Section 3.1.2.1.5. As in Section 3.1.2.1.5, if any fail, the IPP object | Section 3.1.2.1.5. As in Section 3.1.2.1.5, if any fail, the IPP object | |||
| REJECTS the request and RETURNS the 'client-error-bad-request' or the | REJECTS the request and RETURNS the 'client-error-bad-request' or the | |||
| 'client-error-request-value-too-long' status code. | 'client-error-request-value-too-long' status code. | |||
| In addition, the IPP object checks each Operation attribute value | In addition, the IPP object checks each Operation attribute value | |||
| against some Printer attribute or some hard-coded value if there is no | against some Printer attribute or some hard-coded value if there is no | |||
| "xxx-supported" Printer attribute defined. If its value is not among | "xxx-supported" Printer attribute defined. If its value is not among | |||
| those supported or is not in the range supported, then the IPP object | those supported or is not in the range supported, then the IPP object | |||
| REJECTS the request and RETURNS the error status code indicated in the | REJECTS the request and RETURNS the error status code indicated in the | |||
| skipping to change at page 27, line 43 ¶ | skipping to change at page 32, line 28 ¶ | |||
| value), the check always fails. | value), the check always fails. | |||
| If the IPP object doesn't recognize/support an attribute, the IPP object | If the IPP object doesn't recognize/support an attribute, the IPP object | |||
| treats the attribute as an unknown or unsupported attribute (see the | treats the attribute as an unknown or unsupported attribute (see the | |||
| last row in the table below). | last row in the table below). | |||
| ----------------------------------------------- | ----------------------------------------------- | |||
| document-natural-language (naturalLanguage) | document-natural-language (naturalLanguage) | |||
| IF NOT a single non-empty 'naturalLanguage' value, REJECT/RETURN | IF NOT a single non-empty 'naturalLanguage' value, REJECT/RETURN | |||
| 'client-error-bad-request'. | 'client-error-bad-request'. | |||
| IF the value length is greater than 63 octets, REJECT/RETURN 'client- | IF the value length is greater than 63 octets, REJECT/RETURN | |||
| error-request-value-too-long'. | 'client-error-request-value-too-long'. | |||
| IF NOT a value that the Printer object supports in document formats, | IF NOT a value that the Printer object supports in document | |||
| (no corresponding "xxx-supported" Printer attribute), REJECT/RETURN | formats, (no corresponding "xxx-supported" Printer attribute), | |||
| 'client-error-natural-language-not-supported'. | REJECT/RETURN 'client-error-natural-language-not-supported'. | |||
| compression (type3 keyword) | compression (type3 keyword) | |||
| IF NOT a single 'keyword' value, REJECT/RETURN 'client-error-bad- | IF NOT a single 'keyword' value, REJECT/RETURN 'client-error-bad- | |||
| request'. | request'. | |||
| IF the value length is greater than 255 octets, REJECT/RETURN | IF the value length is greater than 255 octets, REJECT/RETURN | |||
| 'client-error-request-value-too-long'. | 'client-error-request-value-too-long'. | |||
| IF NOT in the Printer object's "compression-supported" attribute, | ||||
| Expires March 27, 2000 | copy the attribute and the unsupported value to the | |||
| Unsupported Attributes response group and REJECT/RETURN | ||||
| IF NOT in the Printer object's "compression-supported" attribute, | 'client-error-attributes-or-values-not-supported'. | |||
| copy the attribute and the unsupported value to the Unsupported | Note to IPP/1.0 implementers: Support for the "compression" | |||
| Attributes response group and REJECT/RETURN 'client-error- | attribute was optional in IPP/1.0 and was changed to REQUIRED | |||
| attributes-or-values-not-supported'. | in IPP/1.1. However, an IPP/1.0 object SHOULD at least check | |||
| for the "compression" attribute being present and reject the | ||||
| create request, if they don't support "compression". Not | ||||
| checking is a bug, since the data will be unintelligible. | ||||
| Note to IPP/1.0 implementers: Support for the compression attribute was | job-k-octets (integer(0:MAX)) | |||
| optional in IPP/1.0. However, an IPP/1.0 object SHOULD at least check | IF NOT a single 'integer' value equal to 4 octets, | |||
| for the "compression" attribute being present and reject the create | ||||
| request, if they don't support "compression". Not checking is a bug, | ||||
| since the data will be unintelligible. job-k-octets (integer(0:MAX)) | ||||
| IF NOT a single 'integer' value equal to 4 octets, | Expires November 30, 2000 | |||
| REJECT/RETURN 'client-error-bad-request'. | REJECT/RETURN 'client-error-bad-request'. | |||
| IF NOT in the range of the Printer object's "job-k-octets-supported" | IF NOT in the range of the Printer object's "job-k-octets- | |||
| attribute, copy the attribute and the unsupported value to the | supported" attribute, copy the attribute and the unsupported | |||
| Unsupported Attributes response group and REJECT/RETURN 'client- | value to the Unsupported Attributes response group and | |||
| error-attributes-or-values-not-supported'. | REJECT/RETURN 'client-error-attributes-or-values-not- | |||
| supported'. | ||||
| job-impressions (integer(0:MAX)) | job-impressions (integer(0:MAX)) | |||
| IF NOT a single 'integer' value equal to 4 octets, | IF NOT a single 'integer' value equal to 4 octets, | |||
| REJECT/RETURN 'client-error-bad-request'. | REJECT/RETURN 'client-error-bad-request'. | |||
| IF NOT in the range of the Printer object's "job-impressions- | IF NOT in the range of the Printer object's "job-impressions- | |||
| supported" attribute, copy the attribute and the unsupported value | supported" attribute, copy the attribute and the unsupported | |||
| to the Unsupported Attributes response group and REJECT/RETURN | value to the Unsupported Attributes response group and | |||
| 'client-error-attributes-or-values-not-supported'. | REJECT/RETURN 'client-error-attributes-or-values-not- | |||
| supported'. | ||||
| job-media-sheets (integer(0:MAX)) | job-media-sheets (integer(0:MAX)) | |||
| IF NOT a single 'integer' value equal to 4 octets, | IF NOT a single 'integer' value equal to 4 octets, | |||
| REJECT/RETURN 'client-error-bad-request'. | REJECT/RETURN 'client-error-bad-request'. | |||
| IF NOT in the range of the Printer object's "job-media-sheets- | IF NOT in the range of the Printer object's "job-media-sheets- | |||
| supported" attribute, copy the attribute and the unsupported value | supported" attribute, copy the attribute and the unsupported | |||
| to the Unsupported Attributes response group and REJECT/RETURN | value to the Unsupported Attributes response group and | |||
| 'client-error-attributes-or-values-not-supported'. | REJECT/RETURN 'client-error-attributes-or-values-not- | |||
| supported'. | ||||
| message (text(127)) | message (text(127)) | |||
| IF NOT a single 'text' value, REJECT/RETURN 'client-error-bad- | IF NOT a single 'text' value, REJECT/RETURN 'client-error-bad- | |||
| request'. | request'. | |||
| IF the value length is greater than 127 octets, | IF the value length is greater than 127 octets, | |||
| REJECT/RETURN 'client-error-request-value-too-long'. | REJECT/RETURN 'client-error-request-value-too-long'. | |||
| unknown or unsupported attribute | unknown or unsupported attribute | |||
| IF the attribute syntax supplied by the client is supported but the | IF the attribute syntax supplied by the client is supported but the | |||
| length is not legal for that attribute syntax, REJECT/RETURN | length is not legal for that attribute syntax, REJECT/RETURN | |||
| 'client-error-request-value-too-long'. | 'client-error-request-value-too-long'. | |||
| ELSE copy the attribute and value to the Unsupported Attributes | ELSE copy the attribute and value to the Unsupported Attributes | |||
| response group and change the attribute value to the "out-of-band" | response group and change the attribute value to the "out-of- | |||
| 'unsupported' value, but otherwise ignore the attribute. | band" 'unsupported' value, but otherwise ignore the attribute. | |||
| Note: Future Operation attributes may be added to the protocol | Note: Future Operation attributes may be added to the protocol | |||
| specification that may occur anywhere in the specified group. When the | specification that may occur anywhere in the specified group. When the | |||
| operation is otherwise successful, the IPP object returns the | operation is otherwise successful, the IPP object returns the | |||
| Expires March 27, 2000 | ||||
| 'successful-ok-ignored-or-substituted-attributes' status code. Ignoring | 'successful-ok-ignored-or-substituted-attributes' status code. Ignoring | |||
| unsupported Operation attributes in all operations is analogous to the | unsupported Operation attributes in all operations is analogous to the | |||
| Expires November 30, 2000 | ||||
| handling of unsupported Job Template attributes in the create and | handling of unsupported Job Template attributes in the create and | |||
| Validate-Job operations when the client supplies the "ipp-attribute- | Validate-Job operations when the client supplies the "ipp-attribute- | |||
| fidelity" Operation attribute with the 'false' value. This last rule is | fidelity" Operation attribute with the 'false' value. This last rule is | |||
| so that we can add OPTIONAL Operation attributes to future versions of | 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 | 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 | clients can inter-work with older IPP objects. (If the new attribute | |||
| cannot be ignored without performing unexpectedly, the major version | cannot be ignored without performing unexpectedly, the major version | |||
| number would have been increased in the protocol document and in the | number would have been increased in the protocol document and in the | |||
| request). This rule for Operation attributes is independent of the | request). This rule for Operation attributes is independent of the | |||
| value of the "ipp-attribute-fidelity" attribute. For example, if an | 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 doesn't support the OPTIONAL "job-k-octets" attribute', the | |||
| IPP object treats "job-k-octets" as an unknown attribute and only checks | IPP object treats "job-k-octets" as an unknown attribute and only checks | |||
| the length for the 'integer' attribute syntax supplied by the client. | 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 | 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 'client-error-bad-request' status code, else the IPP object copies | |||
| the attribute to the Unsupported Attribute response group, setting the | the attribute to the Unsupported Attribute response group, setting the | |||
| value to the "out-of-band" 'unsupported' value, but otherwise ignores | value to the "out-of-band" 'unsupported' value, but otherwise ignores | |||
| the attribute. | the attribute. | |||
| Expires March 27, 2000 | Expires November 30, 2000 | |||
| 3.1.2.2 Suggested Additional Processing Steps for Operations that | 3.1.2.2 Suggested Additional Processing Steps for Operations that | |||
| Create/Validate Jobs and Add Documents | Create/Validate Jobs and Add Documents | |||
| This section in combination with the previous section recommends the | This section in combination with the previous section recommends the | |||
| processing steps for the Print-Job, Validate-Job, Print-URI, Create-Job, | processing steps for the Print-Job, Validate-Job, Print-URI, Create-Job, | |||
| Send-Document, and Send-URI operations that IPP objects SHOULD use. | Send-Document, and Send-URI operations that IPP objects SHOULD use. | |||
| These are the operations that create jobs, validate a Print-Job request, | These are the operations that create jobs, validate a Print-Job request, | |||
| and add documents to a job. | and add documents to a job. | |||
| IIG Sect # Flow IPP error status codes | IIG Sect # Flow IPP error status codes | |||
| ---------- ---- ---------------------- | ---------- ---- ---------------------- | |||
| | | | | |||
| skipping to change at page 30, line 53 ¶ | skipping to change at page 36, line 5 ¶ | |||
| 3.1.2.2.1 Default "ipp-attribute-fidelity" if not supplied | 3.1.2.2.1 Default "ipp-attribute-fidelity" if not supplied | |||
| The Printer object checks to see if the client supplied an "ipp- | The Printer object checks to see if the client supplied an "ipp- | |||
| attribute-fidelity" Operation attribute. If the attribute is not | attribute-fidelity" Operation attribute. If the attribute is not | |||
| supplied by the client, the IPP object assumes that the value is | supplied by the client, the IPP object assumes that the value is | |||
| 'false'. | 'false'. | |||
| 3.1.2.2.2 Check that the Printer object is accepting jobs | 3.1.2.2.2 Check that the Printer object is accepting jobs | |||
| Expires November 30, 2000 | ||||
| If the value of the Printer objects "printer-is-accepting-jobs" is | If the value of the Printer objects "printer-is-accepting-jobs" is | |||
| 'false', the Printer object REJECTS the request and RETURNS the 'server- | 'false', the Printer object REJECTS the request and RETURNS the 'server- | |||
| error-not-accepting-jobs' status code. | error-not-accepting-jobs' status code. | |||
| 3.1.2.2.3 Validate the values of the Job Template attributes | 3.1.2.2.3 Validate the values of the Job Template attributes | |||
| Expires March 27, 2000 | ||||
| An IPP object validates the values of all Job Template attribute | An IPP object validates the values of all Job Template attribute | |||
| supplied by the client. The IPP object performs the analogous syntactic | supplied by the client. The IPP object performs the analogous syntactic | |||
| validation checks of each Job Template attribute value that it performs | validation checks of each Job Template attribute value that it performs | |||
| for Operation attributes (see Section 3.1.2.1.5.): | for Operation attributes (see Section 3.1.2.1.5.): | |||
| a) that the length of each value is correct for the attribute | a) that the length of each value is correct for the attribute | |||
| syntax tag supplied by the client according to [IPP-MOD] Section 4.1. | syntax tag supplied by the client according to [IPP-MOD] Section 4.1. | |||
| b) that the attribute syntax tag is correct for that attribute | b) that the attribute syntax tag is correct for that attribute | |||
| according to [IPP-MOD] Sections 4.2 to 4.4. | according to [IPP-MOD] Sections 4.2 to 4.4. | |||
| c) that multiple values are supplied only for multi-valued | c) that multiple values are supplied only for multi-valued | |||
| attributes, i.e., that are 1setOf X according to [IPP-MOD] Sections 4.2 | attributes, i.e., that are 1setOf X according to [IPP-MOD] Sections | |||
| to 4.4. | 4.2 to 4.4. | |||
| As in Section 3.1.2.1.5, if any of these syntactic checks fail, the IPP | As in Section 3.1.2.1.5, if any of these syntactic checks fail, the IPP | |||
| object REJECTS the request and RETURNS the 'client-error-bad-request' or | object REJECTS the request and RETURNS the 'client-error-bad-request' or | |||
| 'client-error-request-value-too-long' status code as appropriate, | 'client-error-request-value-too-long' status code as appropriate, | |||
| independent of the value of the "ipp-attribute-fidelity". Since such an | 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, | 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 | 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 | of which attribute had the error in either the Unsupported Attributes | |||
| Group or the Status Message. The description for each of these | Group or the Status Message. The description for each of these | |||
| syntactic checks is explicitly expressed in the first IF statement in | syntactic checks is explicitly expressed in the first IF statement in | |||
| the following table. | the following table. | |||
| Each Job Template attribute MUST occur no more than once. If an IPP | Each Job Template attribute MUST occur no more than once. If an IPP | |||
| Printer receives a create request with multiple occurrences of a Job | Printer receives a create request with multiple occurrences of a Job | |||
| Template attribute, it MAY: | Template attribute, it MAY: | |||
| 1.reject the operation and return the 'client-error-bad syntax' | 1. reject the operation and return the 'client-error-bad-request' | |||
| error status code | error status code | |||
| 2.accept the operation and use the first occurrence of the | 2. accept the operation and use the first occurrence of the | |||
| attribute | attribute | |||
| 3.accept the operation and use the last occurrence of the | 3. accept the operation and use the last occurrence of the | |||
| attribute | attribute | |||
| Expires November 30, 2000 | ||||
| depending on implementation. Therefore, clients MUST NOT supply | depending on implementation. Therefore, clients MUST NOT supply | |||
| multiple occurrences of the same Job Template attribute in the Job | multiple occurrences of the same Job Template attribute in the Job | |||
| Attributes group in the request. | Attributes group in the request. | |||
| 3.1.2.3 Algorithm for job validation | 3.1.2.3 Algorithm for job validation | |||
| The process of validating a Job-Template attribute "xxx" against a | The process of validating a Job-Template attribute "xxx" against a | |||
| Printer attribute "xxx-supported" can use the following validation | Printer attribute "xxx-supported" can use the following validation | |||
| algorithm (see section 3.2.1.2 in [ipp-mod]). | algorithm (see section 3.2.1.2 in [ipp-mod]). | |||
| To validate the value U of Job-Template attribute "xxx" against the | To validate the value U of Job-Template attribute "xxx" against the | |||
| value V of Printer "xxx-supported", perform the following algorithm: | value V of Printer "xxx-supported", perform the following algorithm: | |||
| Expires March 27, 2000 | ||||
| 1.If U is multi-valued, validate each value X of U by performing the | 1.If U is multi-valued, validate each value X of U by performing the | |||
| algorithm in Table 7 with each value X. Each validation is separate | algorithm in Table 7 with each value X. Each validation is separate | |||
| from the standpoint of returning unsupported values. Example: If U | from the standpoint of returning unsupported values. Example: If U | |||
| is "finishings" that the client supplies with 'staple', 'bind' | is "finishings" that the client supplies with 'staple', 'bind' | |||
| values, then X takes on the successive values: 'staple', then 'bind' | values, then X takes on the successive values: 'staple', then 'bind' | |||
| 2.If V is multi-valued, validate X against each Z of V by performing | 2.If V is multi-valued, validate X against each Z of V by performing | |||
| the algorithm in Table 7 with each value Z. If a value Z validates, | the algorithm in Table 7 with each value Z. If a value Z validates, | |||
| the validation for the attribute value X succeeds. If it fails, the | 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 | algorithm is applied to the next value Z of V. If there are no more | |||
| skipping to change at page 32, line 30 ¶ | skipping to change at page 37, line 44 ¶ | |||
| 'two-sided-long', the first comparison fails ('one-sided' is not | 'two-sided-long', the first comparison fails ('one-sided' is not | |||
| equal to 'two-sided-long'), the second comparison succeeds ('two- | equal to 'two-sided-long'), the second comparison succeeds ('two- | |||
| sided-long' is equal to 'two-sided-long"), and the third comparison | sided-long' is equal to 'two-sided-long"), and the third comparison | |||
| ('two-sided-short' with 'two-sided-long') is not even performed. | ('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 | 3.If both U and V are single-valued, let X be U and Z be V and use the | |||
| validation rules in Table 7. | validation rules in Table 7. | |||
| Table 7 - Rules for validating single values X against Z | Table 7 - Rules for validating single values X against Z | |||
| Attribute attribute v alidated if: | Attribute attribute validated if: | |||
| syntax of X syntax of Z | syntax of X syntax of Z | |||
| integer rangeOfInteger X is within the range of | integer rangeOfInteger X is within the range of Z | |||
| Z | uri uriScheme the uri scheme in X is equal to Z | |||
| uri uriScheme t he uri scheme in X is | any boolean the value of Z is TRUE | |||
| equal to Z | any any X and Z are of the same type and are | |||
| any boolean t he value of Z is TRUE | equal. | |||
| any any X and Z are of the same | ||||
| type and are equal. | Expires November 30, 2000 | |||
| If the value of the Printer object's "xxx-supported" attribute is 'no- | If the value of the Printer object's "xxx-supported" attribute is 'no- | |||
| value' (because the system administrator hasn't configured a value), the | value' (because the system administrator hasn't configured a value), the | |||
| check always fails. If the check fails, the IPP object copies the | check always fails. If the check fails, the IPP object copies the | |||
| attribute to the Unsupported Attributes response group with its | attribute to the Unsupported Attributes response group with its | |||
| unsupported value. If the attribute contains more than one value, each | unsupported value. If the attribute contains more than one value, each | |||
| value is checked and each unsupported value is separately copied, while | value is checked and each unsupported value is separately copied, while | |||
| supported values are not copied. If an IPP object doesn't | supported values are not copied. If an IPP object doesn't | |||
| recognize/support a Job Template attribute, i.e., there is no | recognize/support a Job Template attribute, i.e., there is no | |||
| corresponding Printer object "xxx-supported" attribute, the IPP object | corresponding Printer object "xxx-supported" attribute, the IPP object | |||
| treats the attribute as an unknown or unsupported attribute (see the | treats the attribute as an unknown or unsupported attribute (see the | |||
| last row in the table below). | last row in the table below). | |||
| If some Job Template attributes are supported for some document formats | If some Job Template attributes are supported for some document formats | |||
| and not for others or the values are different for different document | and not for others or the values are different for different document | |||
| formats, the IPP object SHOULD take that into account in this validation | formats, the IPP object SHOULD take that into account in this validation | |||
| using the value of the "document-format" supplied by the client (or | using the value of the "document-format" supplied by the client (or | |||
| defaulted to the value of the Printer's "document-format-default" | defaulted to the value of the Printer's "document-format-default" | |||
| attribute, if not supplied by the client). For example, if "number-up" | attribute, if not supplied by the client). For example, if "number-up" | |||
| is supported for the 'text/plain' document format, but not for the | is supported for the 'text/plain' document format, but not for the | |||
| Expires March 27, 2000 | ||||
| 'application/postscript' document format, the check SHOULD (though it | 'application/postscript' document format, the check SHOULD (though it | |||
| NEED NOT) depend on the value of the "document-format" operation | NEED NOT) depend on the value of the "document-format" operation | |||
| attribute. See "document-format" in [IPP-MOD] section 3.2.1.1 and | attribute. See "document-format" in [IPP-MOD] section 3.2.1.1 and | |||
| 3.2.5.1. | 3.2.5.1. | |||
| Note: whether the request is accepted or rejected is determined by the | Note: whether the request is accepted or rejected is determined by the | |||
| value of the "ipp-attribute-fidelity" attribute in a subsequent step, so | value of the "ipp-attribute-fidelity" attribute in a subsequent step, so | |||
| that all Job Template attribute supplied are examined and all | that all Job Template attribute supplied are examined and all | |||
| unsupported attributes and/or values are copied to the Unsupported | unsupported attributes and/or values are copied to the Unsupported | |||
| Attributes response group. | Attributes response group. | |||
| ----------------------------------------------- | ----------------------------------------------- | |||
| job-priority (integer(1:100)) | job-priority (integer(1:100)) | |||
| IF NOT a single 'integer' value with a length equal to 4 octets, | IF NOT a single 'integer' value with a length equal to 4 octets, | |||
| REJECT/RETURN 'client-error-bad-request'. | REJECT/RETURN 'client-error-bad-request'. | |||
| IF NOT supplied by the client, use the value of the Printer object's | IF NOT supplied by the client, use the value of the Printer | |||
| "job-priority-default" attribute at job submission time. | object's "job-priority-default" attribute at job submission | |||
| IF NOT in the range 1 to 100, inclusive, copy the attribute and the | time. | |||
| unsupported value to the Unsupported Attributes response group. | IF NOT in the range 1 to 100, inclusive, copy the attribute and the | |||
| Map the value to the nearest supported value in the range 1:100 as | unsupported value to the Unsupported Attributes response | |||
| specified by the number of discrete values indicated by the value | group. | |||
| of the Printer's "job-priority-supported" attribute. See the | Map the value to the nearest supported value in the range 1:100 as | |||
| formula in [IPP-MOD] Section 4.2.1. | specified by the number of discrete values indicated by the | |||
| value of the Printer's "job-priority-supported" attribute. | ||||
| See the formula in [IPP-MOD] Section 4.2.1. | ||||
| Expires November 30, 2000 | ||||
| job-hold-until (type3 keyword | name) | job-hold-until (type3 keyword | name) | |||
| IF NOT a single 'keyword' or 'name' value, REJECT/RETURN 'client- | IF NOT a single 'keyword' or 'name' value, REJECT/RETURN 'client- | |||
| error-bad-request'. | error-bad-request'. | |||
| IF the value length is greater than 255 octets, REJECT/RETURN | IF the value length is greater than 255 octets, REJECT/RETURN | |||
| 'client-error-request-value-too-long'. | 'client-error-request-value-too-long'. | |||
| IF NOT supplied by the client, use the value of the Printer object's | IF NOT supplied by the client, use the value of the Printer | |||
| "job-hold-until" attribute at job submission time. | object's "job-hold-until" attribute at job submission time. | |||
| IF NOT in the Printer object's "job-hold-until-supported" attribute, | IF NOT in the Printer object's "job-hold-until-supported" | |||
| copy the attribute and the unsupported value to the Unsupported | attribute, copy the attribute and the unsupported value to the | |||
| Attributes response group. | Unsupported Attributes response group. | |||
| job-sheets (type3 keyword | name) | job-sheets (type3 keyword | name) | |||
| IF NOT a single 'keyword' or 'name' value, REJECT/RETURN 'client- | IF NOT a single 'keyword' or 'name' value, REJECT/RETURN 'client- | |||
| error-bad-request'. | error-bad-request'. | |||
| IF the value length is greater than 255 octets, REJECT/RETURN | IF the value length is greater than 255 octets, REJECT/RETURN | |||
| 'client-error-request-value-too-long'. | 'client-error-request-value-too-long'. | |||
| IF NOT in the Printer object's "job-sheets-supported" attribute, copy | IF NOT in the Printer object's "job-sheets-supported" attribute, | |||
| the attribute and the unsupported value to the Unsupported | copy the attribute and the unsupported value to the | |||
| Attributes response group. | Unsupported Attributes response group. | |||
| multiple-document-handling (type2 keyword) | multiple-document-handling (type2 keyword) | |||
| IF NOT a single 'keyword' value, REJECT/RETURN 'client-error-bad- | IF NOT a single 'keyword' value, REJECT/RETURN 'client-error-bad- | |||
| request'. | request'. | |||
| IF the value length is greater than 255 octets, REJECT/RETURN | IF the value length is greater than 255 octets, REJECT/RETURN | |||
| 'client-error-request-value-too-long'. | 'client-error-request-value-too-long'. | |||
| IF NOT in the Printer object's "multiple-document-handling- | ||||
| Expires March 27, 2000 | supported" attribute, copy the attribute and the unsupported | |||
| value to the Unsupported Attributes response group. | ||||
| 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)) | copies (integer(1:MAX)) | |||
| IF NOT a single 'integer' value with a length equal to 4 octets, | IF NOT a single 'integer' value with a length equal to 4 octets, | |||
| REJECT/RETURN 'client-error-bad-request'. | REJECT/RETURN 'client-error-bad-request'. | |||
| IF NOT in range of the Printer object's "copies-supported" attribute | IF NOT in range of the Printer object's "copies-supported" | |||
| copy the attribute and the unsupported value to the Unsupported | attribute | |||
| Attributes response group. | copy the attribute and the unsupported value to the Unsupported | |||
| Attributes response group. | ||||
| finishings (1setOf type2 enum) | finishings (1setOf type2 enum) | |||
| IF NOT an 'enum' value(s) each with a length equal to 4 octets, | IF NOT an 'enum' value(s) each with a length equal to 4 octets, | |||
| REJECT/RETURN 'client-error-bad-request'. | REJECT/RETURN 'client-error-bad-request'. | |||
| IF NOT in the Printer object's "finishings-supported" attribute, copy | IF NOT in the Printer object's "finishings-supported" attribute, | |||
| the attribute and the unsupported value(s), but not any supported | copy the attribute and the unsupported value(s), but not any | |||
| values, to the Unsupported Attributes response group. | ||||
| Expires November 30, 2000 | ||||
| supported values, to the Unsupported Attributes response | ||||
| group. | ||||
| page-ranges (1setOf rangeOfInteger(1:MAX)) | page-ranges (1setOf rangeOfInteger(1:MAX)) | |||
| IF NOT a 'rangeOfInteger' value(s) each with a length equal to 8 | IF NOT a 'rangeOfInteger' value(s) each with a length equal to 8 | |||
| octets, REJECT/RETURN 'client-error-bad-request'. | octets, REJECT/RETURN 'client-error-bad-request'. | |||
| IF first value is greater than second value in any range, the ranges | IF first value is greater than second value in any range, the | |||
| are not in ascending order, or ranges overlap, REJECT/RETURN | ranges are not in ascending order, or ranges overlap, | |||
| 'client-error-bad-request'. | REJECT/RETURN 'client-error-bad-request'. | |||
| IF the value of the Printer object's "page-ranges-supported" | IF the value of the Printer object's "page-ranges-supported" | |||
| attribute is 'false', copy the attribute to the Unsupported | attribute is 'false', copy the attribute to the Unsupported | |||
| Attributes response group and set the value to the "out-of-band" | Attributes response group and set the value to the "out-of- | |||
| 'unsupported' value. | band" 'unsupported' value. | |||
| sides (type2 keyword) | sides (type2 keyword) | |||
| IF NOT a single 'keyword' value, REJECT/RETURN 'client-error-bad- | IF NOT a single 'keyword' value, REJECT/RETURN 'client-error-bad- | |||
| request'. | request'. | |||
| IF the value length is greater than 255 octets, REJECT/RETURN | IF the value length is greater than 255 octets, REJECT/RETURN | |||
| 'client-error-request-value-too-long'. | 'client-error-request-value-too-long'. | |||
| IF NOT in the Printer object's "sides-supported" attribute, copy the | IF NOT in the Printer object's "sides-supported" attribute, copy | |||
| attribute and the unsupported value to the Unsupported Attributes | the attribute and the unsupported value to the Unsupported | |||
| response group. | Attributes response group. | |||
| number-up (integer(1:MAX)) | number-up (integer(1:MAX)) | |||
| IF NOT a single 'integer' value with a length equal to 4 octets, | IF NOT a single 'integer' value with a length equal to 4 octets, | |||
| REJECT/RETURN 'client-error-bad-request'. | REJECT/RETURN 'client-error-bad-request'. | |||
| IF NOT a value or in the range of one of the values of the Printer | IF NOT a value or in the range of one of the values of the Printer | |||
| object's "number-up-supported" attribute, copy the attribute and | object's "number-up-supported" attribute, copy the attribute | |||
| value to the Unsupported Attribute response group. | and value to the Unsupported Attribute response group. | |||
| orientation-requested (type2 enum) | orientation-requested (type2 enum) | |||
| IF NOT a single 'enum' value with a length equal to 4 octets, | IF NOT a single 'enum' value with a length equal to 4 octets, | |||
| REJECT/RETURN 'client-error-bad-request'. | REJECT/RETURN 'client-error-bad-request'. | |||
| IF NOT in the Printer object's "orientation-requested-supported" | ||||
| Expires March 27, 2000 | attribute, copy the attribute and the unsupported value to the | |||
| IF NOT in the Printer object's "orientation-requested-supported" | Unsupported Attributes response group. | |||
| attribute, copy the attribute and the unsupported value to the | ||||
| Unsupported Attributes response group. | ||||
| media (type3 keyword | name) | media (type3 keyword | name) | |||
| IF NOT a single 'keyword' or 'name' value, REJECT/RETURN 'client- | IF NOT a single 'keyword' or 'name' value, REJECT/RETURN 'client- | |||
| error-bad-request'. | error-bad-request'. | |||
| IF the value length is greater than 255 octets, REJECT/RETURN | IF the value length is greater than 255 octets, REJECT/RETURN | |||
| 'client-error-request-value-too-long'. | 'client-error-request-value-too-long'. | |||
| IF NOT in the Printer object's "media-supported" attribute, copy the | ||||
| attribute and the unsupported value to the Unsupported Attributes | Expires November 30, 2000 | |||
| response group. | ||||
| IF NOT in the Printer object's "media-supported" attribute, copy | ||||
| the attribute and the unsupported value to the Unsupported | ||||
| Attributes response group. | ||||
| printer-resolution (resolution) | printer-resolution (resolution) | |||
| IF NOT a single 'resolution' value with a length equal to 9 octets, | IF NOT a single 'resolution' value with a length equal to 9 octets, | |||
| REJECT/RETURN 'client-error-bad-request'. | REJECT/RETURN 'client-error-bad-request'. | |||
| IF NOT in the Printer object's "printer-resolution-supported" | IF NOT in the Printer object's "printer-resolution-supported" | |||
| attribute, copy the attribute and the unsupported value to the | attribute, copy the attribute and the unsupported value to the | |||
| Unsupported Attributes response group. | Unsupported Attributes response group. | |||
| print-quality (type2 enum) | print-quality (type2 enum) | |||
| IF NOT a single 'enum' value with a length equal to 4 octets, | IF NOT a single 'enum' value with a length equal to 4 octets, | |||
| REJECT/RETURN 'client-error-bad-request'. | REJECT/RETURN 'client-error-bad-request'. | |||
| IF NOT in the Printer object's "print-quality-supported" attribute, | IF NOT in the Printer object's "print-quality-supported" attribute, | |||
| copy the attribute and the unsupported value to the Unsupported | copy the attribute and the unsupported value to the | |||
| Attributes response group. | Unsupported Attributes response group. | |||
| unknown or unsupported attribute (i.e., there is no corresponding | unknown or unsupported attribute (i.e., there is no corresponding | |||
| Printer object "xxx-supported" attribute) | Printer object "xxx-supported" attribute) | |||
| IF the attribute syntax supplied by the client is supported but the | IF the attribute syntax supplied by the client is supported but the | |||
| length is not legal for that attribute syntax, | length is not legal for that attribute syntax, | |||
| REJECT/RETURN 'client-error-bad-request' if the length of the | REJECT/RETURN 'client-error-bad-request' if the length of the | |||
| attribute syntax is fixed or 'client-error-request-value-too-long' | attribute syntax is fixed or 'client-error-request-value-too- | |||
| if the length of the attribute syntax is variable. | long' if the length of the attribute syntax is variable. | |||
| ELSE copy the attribute and value to the Unsupported Attributes | ELSE copy the attribute and value to the Unsupported Attributes | |||
| response group and change the attribute value to the "out-of-band" | response group and change the attribute value to the "out-of- | |||
| 'unsupported' value. Any remaining Job Template Attributes are | band" 'unsupported' value. Any remaining Job Template | |||
| either unknown or unsupported Job Template attributes and are | Attributes are either unknown or unsupported Job Template | |||
| validated algorithmically according to their attribute syntax for | attributes and are validated algorithmically according to | |||
| proper length (see below). | their attribute syntax for proper length (see below). | |||
| ----------------------------------------------- | ----------------------------------------------- | |||
| If the attribute syntax is supported AND the length check fails, the IPP | If the attribute syntax is supported AND the length check fails, the IPP | |||
| object REJECTS the request and RETURNS the 'client-error-bad-request' if | object REJECTS the request and RETURNS the 'client-error-bad-request' if | |||
| the length of the attribute syntax is fixed or the 'client-error- | the length of the attribute syntax is fixed or the 'client-error- | |||
| request-value-too-long' status code if the length of the attribute | request-value-too-long' status code if the length of the attribute | |||
| syntax is variable. Otherwise, the IPP object copies the unsupported Job | syntax is variable. Otherwise, the IPP object copies the unsupported Job | |||
| Template attribute to the Unsupported Attributes response group and | Template attribute to the Unsupported Attributes response group and | |||
| changes the attribute value to the "out-of-band" 'unsupported' value. | changes the attribute value to the "out-of-band" 'unsupported' value. | |||
| The following table shows the length checks for all attribute syntaxes. | The following table shows the length checks for all attribute syntaxes. | |||
| Expires March 27, 2000 | ||||
| In the following table: "<=" means less than or equal, "=" means equal | In the following table: "<=" means less than or equal, "=" means equal | |||
| to: | to: | |||
| Name Octet length check for read-write attributes | Name Octet length check for read-write attributes | |||
| Expires November 30, 2000 | ||||
| ----------- -------------------------------------------- | ----------- -------------------------------------------- | |||
| 'textWithLanguage <= 1023 AND 'naturalLanguage' <= 63 | 'textWithLanguage <= 1023 AND 'naturalLanguage' <= 63 | |||
| 'textWithoutLanguage' <= 1023 | 'textWithoutLanguage' <= 1023 | |||
| 'nameWithLanguage' <= 255 AND 'naturalLanguage' <= 63 | 'nameWithLanguage' <= 255 AND 'naturalLanguage' <= 63 | |||
| 'nameWithoutLanguage' <= 255 | 'nameWithoutLanguage' <= 255 | |||
| 'keyword' <= 255 | 'keyword' <= 255 | |||
| 'enum' = 4 | 'enum' = 4 | |||
| 'uri' <= 1023 | 'uri' <= 1023 | |||
| 'uriScheme' <= 63 | 'uriScheme' <= 63 | |||
| 'charset' <= 63 | 'charset' <= 63 | |||
| 'naturalLanguage' <= 63 | 'naturalLanguage' <= 63 | |||
| 'mimeMediaType' <= 255 | 'mimeMediaType' <= 255 | |||
| skipping to change at page 36, line 56 ¶ | skipping to change at page 43, line 4 ¶ | |||
| supported attributes and their conflicting attribute values to the | supported attributes and their conflicting attribute values to the | |||
| Unsupported Attributes response group. The Printer object only copies | Unsupported Attributes response group. The Printer object only copies | |||
| over those attributes that the Printer object either ignores or | over those attributes that the Printer object either ignores or | |||
| substitutes in order to resolve the conflict, and it returns the | substitutes in order to resolve the conflict, and it returns the | |||
| original values which were supplied by the client. For example suppose | original values which were supplied by the client. For example suppose | |||
| the client supplies "finishings" equals 'staple' and "media" equals | the client supplies "finishings" equals 'staple' and "media" equals | |||
| 'transparency', but the Printer object does not support stapling | 'transparency', but the Printer object does not support stapling | |||
| transparencies. If the Printer chooses to ignore the stapling request | transparencies. If the Printer chooses to ignore the stapling request | |||
| in order to resolve the conflict, the Printer objects returns | in order to resolve the conflict, the Printer objects returns | |||
| "finishings" equal to 'staple' in the Unsupported Attributes response | "finishings" equal to 'staple' in the Unsupported Attributes response | |||
| Expires November 30, 2000 | ||||
| group. If any attributes are multi-valued, only the conflicting values | group. If any attributes are multi-valued, only the conflicting values | |||
| of the attributes are copied. | of the attributes are copied. | |||
| Expires March 27, 2000 | ||||
| Note: The decisions made to resolve the conflict (if there is a choice) | Note: The decisions made to resolve the conflict (if there is a choice) | |||
| is implementation dependent. | is implementation dependent. | |||
| 3.1.2.3.2 Decide whether to REJECT the request | 3.1.2.3.2 Decide whether to REJECT the request | |||
| If there were any unsupported Job Template attributes or | If there were any unsupported Job Template attributes or | |||
| unsupported/conflicting Job Template attribute values and the client | unsupported/conflicting Job Template attribute values and the client | |||
| supplied the "ipp-attribute-fidelity" attribute with the 'true' value, | supplied the "ipp-attribute-fidelity" attribute with the 'true' value, | |||
| the Printer object REJECTS the request and return the status code: | the Printer object REJECTS the request and return the status code: | |||
| (1) 'client-error-conflicting-attributes' status code, if there were | 1. 'client-error-conflicting-attributes' status code, if there were | |||
| any conflicts between attributes supplied by the client. | any conflicts between attributes supplied by the client. | |||
| (2) 'client-error-attributes-or-values-not-supported' status code, | 2. 'client-error-attributes-or-values-not-supported' status code, | |||
| otherwise. | otherwise. | |||
| Note: Unsupported Operation attributes or values that are returned do | Note: Unsupported Operation attributes or values that are returned do | |||
| not affect the status returned in this step. If the unsupported | not affect the status returned in this step. If the unsupported | |||
| Operation attribute was a serious error, the above already rejected the | Operation attribute was a serious error, the above already rejected the | |||
| request in a previous step. If control gets to this step with | request in a previous step. If control gets to this step with | |||
| unsupported Operation attributes being returned, they are not serious | unsupported Operation attributes being returned, they are not serious | |||
| errors. | errors. | |||
| In general, the final results of Job processing are unknown at Job | In general, the final results of Job processing are unknown at Job | |||
| skipping to change at page 37, line 42 ¶ | skipping to change at page 43, line 45 ¶ | |||
| processing is going to fail. As an optimization, we'd like to have the | processing is going to fail. As an optimization, we'd like to have the | |||
| Printer reject the Job in these cases. | Printer reject the Job in these cases. | |||
| There are three types of "processing" errors that might be detectable at | There are three types of "processing" errors that might be detectable at | |||
| Job submission time: | Job submission time: | |||
| 1. 'client-error-document-format-not-supported' : For the Print-Job, | 1. 'client-error-document-format-not-supported' : For the Print-Job, | |||
| Send-Document, Print-URI, and Send-URI operations, if all these | Send-Document, Print-URI, and Send-URI operations, if all these | |||
| conditions are true: | conditions are true: | |||
| . the Printer supports auto-sensing, | - the Printer supports auto-sensing, | |||
| . the request "document-format" operation attribute is | - the request "document-format" operation attribute is | |||
| 'application/octet-stream', | 'application/octet-stream', | |||
| . the Printer receives document data before responding, | - the Printer receives document data before responding, | |||
| . the Printer auto-senses the document format before responding, | - the Printer auto-senses the document format before responding, | |||
| . the sensed document format is not supported by the Printer | - the sensed document format is not supported by the Printer | |||
| then the Printer should respond with 'client-error-document-format-not- | then the Printer should respond with 'client-error-document-format-not- | |||
| supported' status. | supported' status. | |||
| Expires November 30, 2000 | ||||
| 2. 'client-error-compression-error': For the Print-Job, Send-Document, | 2. 'client-error-compression-error': For the Print-Job, Send-Document, | |||
| Print-URI, and Send-URI operations, if all these conditions are true: | Print-URI, and Send-URI operations, if all these conditions are true: | |||
| . the client supplies a supported value for the "compression" | - the client supplies a supported value for the "compression" | |||
| operation attribute in the request | operation attribute in the request | |||
| . the Printer receives document data before responding, | - the Printer receives document data before responding, | |||
| . the Printer attempts to decompress the document data before | - the Printer attempts to decompress the document data before | |||
| responding, | responding, | |||
| - the document data cannot be decompressed using the algorithm | ||||
| Expires March 27, 2000 | specified by the "compression" operation attribute | |||
| . the document data cannot be decompressed using the algorithm | ||||
| specified by the "compression" operation attribute | ||||
| then the Printer should respond with 'client-error-compression-error' | then the Printer should respond with 'client-error-compression-error' | |||
| status. | status. | |||
| 3. 'client-error-document-access-error': For the Print-URI, and Send- | 3. 'client-error-document-access-error': For the Print-URI, and Send- | |||
| URI operations, if the Printer attempts and fails to pull the referenced | URI operations, if the Printer attempts and fails to pull the referenced | |||
| document data before responding, it should respond with 'client-error- | document data before responding, it should respond with 'client-error- | |||
| document-access-error' status. | document-access-error' status. | |||
| Some Printers are not able to detect these errors until Job processing | Some Printers are not able to detect these errors until Job processing | |||
| time. In that case, the errors are recorded in the corresponding job- | time. In that case, the errors are recorded in the corresponding job- | |||
| skipping to change at page 38, line 36 ¶ | skipping to change at page 44, line 44 ¶ | |||
| A client should always provide a valid "document-format" operation | A client should always provide a valid "document-format" operation | |||
| attribute whenever practical. In the absence of other information, a | attribute whenever practical. In the absence of other information, a | |||
| client itself may sniff the document data to determine document format. | client itself may sniff the document data to determine document format. | |||
| Auto sensing at Job submission time may be more difficult for the | Auto sensing at Job submission time may be more difficult for the | |||
| Printer when combined with compression. For auto-sensed Jobs, a client | Printer when combined with compression. For auto-sensed Jobs, a client | |||
| may be better off deferring compression to the transfer protocol layer, | may be better off deferring compression to the transfer protocol layer, | |||
| e.g.; by using the HTTP Content-Encoding header. | e.g.; by using the HTTP Content-Encoding header. | |||
| 3.1.2.3.3 For the Validate-Job operation, RETURN one of the success | 3.1.2.3.3 For the Validate-Job operation, RETURN one of the success | |||
| status codes | status codes | |||
| If the requested operation is the Validate-Job operation, the Printer | If the requested operation is the Validate-Job operation, the Printer | |||
| object returns: | object returns: | |||
| (1) the "successful-ok" status code, if there are no unsupported or | 1. the "successful-ok" status code, if there are no unsupported or | |||
| conflicting Job Template attributes or values. | conflicting Job Template attributes or values. | |||
| (2) the "successful-ok-conflicting-attributes, if there are any | 2. the "successful-ok-conflicting-attributes, if there are any | |||
| conflicting Job Template attribute or values. | conflicting Job Template attribute or values. | |||
| (3) the "successful-ok-ignored-or-substituted-attributes, if there | ||||
| are only unsupported Job Template attributes or values. | Expires November 30, 2000 | |||
| 3. the "successful-ok-ignored-or-substituted-attributes, if there are | ||||
| only unsupported Job Template attributes or values. | ||||
| Note: Unsupported Operation attributes or values that are returned do | Note: Unsupported Operation attributes or values that are returned do | |||
| not affect the status returned in this step. If the unsupported | not affect the status returned in this step. If the unsupported | |||
| Operation attribute was a serious error, the above already rejected the | Operation attribute was a serious error, the above already rejected the | |||
| request in a previous step. If control gets to this step with | request in a previous step. If control gets to this step with | |||
| unsupported Operation attributes being returned, they are not serious | unsupported Operation attributes being returned, they are not serious | |||
| errors. | errors. | |||
| 3.1.2.3.4 Create the Job object with attributes to support | 3.1.2.3.4 Create the Job object with attributes to support | |||
| Expires March 27, 2000 | ||||
| If "ipp-attribute-fidelity" is set to 'false' (or it was not supplied by | If "ipp-attribute-fidelity" is set to 'false' (or it was not supplied by | |||
| the client), the Printer object: | the client), the Printer object: | |||
| (1) creates a Job object, assigns a unique value to the job's "job- | 1. creates a Job object, assigns a unique value to the job's "job- | |||
| uri" and "job-id" attributes, and initializes all of the job's | uri" and "job-id" attributes, and initializes all of the job's | |||
| other supported Job Description attributes. | other supported Job Description attributes. | |||
| (2) removes all unsupported attributes from the Job object. | 2. removes all unsupported attributes from the Job object. | |||
| (3) for each unsupported value, removes either the unsupported value | 3. for each unsupported value, removes either the unsupported value | |||
| or substitutes the unsupported attribute value with some supported | or substitutes the unsupported attribute value with some supported | |||
| value. If an attribute has no values after removing unsupported | value. If an attribute has no values after removing unsupported | |||
| values from it, the attribute is removed from the Job object (so | values from it, the attribute is removed from the Job object (so | |||
| that the normal default behavior at job processing time will take | that the normal default behavior at job processing time will take | |||
| place for that attribute). | place for that attribute). | |||
| (4) for each conflicting value, removes either the conflicting value | 4. for each conflicting value, removes either the conflicting value | |||
| or substitutes the conflicting attribute value with some other | or substitutes the conflicting attribute value with some other | |||
| supported value. If an attribute has no values after removing | supported value. If an attribute has no values after removing | |||
| conflicting values from it, the attribute is removed from the Job | conflicting values from it, the attribute is removed from the Job | |||
| object (so that the normal default behavior at job processing time | object (so that the normal default behavior at job processing time | |||
| will take place for that attribute). | will take place for that attribute). | |||
| If there were no attributes or values flagged as unsupported, or the | If there were no attributes or values flagged as unsupported, or the | |||
| value of 'ipp-attribute-fidelity" was 'false', the Printer object is | value of 'ipp-attribute-fidelity" was 'false', the Printer object is | |||
| able to accept the create request and create a new Job object. If the | able to accept the create request and create a new Job object. If the | |||
| "ipp-attribute-fidelity" attribute is set to 'true', the Job Template | "ipp-attribute-fidelity" attribute is set to 'true', the Job Template | |||
| attributes that populate the new Job object are necessarily all the Job | attributes that populate the new Job object are necessarily all the Job | |||
| Template attributes supplied in the create request. If the "ipp- | Template attributes supplied in the create request. If the "ipp- | |||
| attribute-fidelity" attribute is set to 'false', the Job Template | attribute-fidelity" attribute is set to 'false', the Job Template | |||
| attributes that populate the new Job object are all the client supplied | attributes that populate the new Job object are all the client supplied | |||
| Job Template attributes that are supported or that have value | Job Template attributes that are supported or that have value | |||
| substitution. Thus, some of the requested Job Template attributes may | substitution. Thus, some of the requested Job Template attributes may | |||
| not appear in the Job object because the Printer object did not support | not appear in the Job object because the Printer object did not support | |||
| those attributes. The attributes that populate the Job object are | those attributes. The attributes that populate the Job object are | |||
| persistently stored with the Job object for that Job. A Get-Job- | persistently stored with the Job object for that Job. A Get-Job- | |||
| Expires November 30, 2000 | ||||
| Attributes operation on that Job object will return only those | Attributes operation on that Job object will return only those | |||
| attributes that are persistently stored with the Job object. | attributes that are persistently stored with the Job object. | |||
| Note: All Job Template attributes that are persistently stored with the | Note: All Job Template attributes that are persistently stored with the | |||
| Job object are intended to be "override values"; that is, they that take | Job object are intended to be "override values"; that is, they that take | |||
| precedence over whatever other embedded instructions might be in the | precedence over whatever other embedded instructions might be in the | |||
| document data itself. However, it is not possible for all Printer | document data itself. However, it is not possible for all Printer | |||
| objects to realize the semantics of "override". End users may query the | objects to realize the semantics of "override". End users may query the | |||
| Printer's "pdl-override-supported" attribute to determine if the Printer | Printer's "pdl-override-supported" attribute to determine if the Printer | |||
| either attempts or does not attempt to override document data | either attempts or does not attempt to override document data | |||
| skipping to change at page 40, line 5 ¶ | skipping to change at page 46, line 27 ¶ | |||
| There are some cases, where a Printer supports a Job Template attribute | There are some cases, where a Printer supports a Job Template attribute | |||
| and has an associated default value set for that attribute. In the case | and has an associated default value set for that attribute. In the case | |||
| where a client does not supply the corresponding attribute, the Printer | where a client does not supply the corresponding attribute, the Printer | |||
| does not use its default values to populate Job attributes when creating | does not use its default values to populate Job attributes when creating | |||
| the new Job object; only Job Template attributes actually in the create | the new Job object; only Job Template attributes actually in the create | |||
| request are used to populate the Job object. The Printer's default | request are used to populate the Job object. The Printer's default | |||
| values are only used later at Job processing time if no other IPP | values are only used later at Job processing time if no other IPP | |||
| attribute or instruction embedded in the document data is present. | attribute or instruction embedded in the document data is present. | |||
| Expires March 27, 2000 | ||||
| Note: If the default values associated with Job Template attributes that | Note: If the default values associated with Job Template attributes that | |||
| the client did not supply were to be used to populate the Job object, | the client did not supply were to be used to populate the Job object, | |||
| then these values would become "override values" rather than defaults. | then these values would become "override values" rather than defaults. | |||
| If the Printer supports the 'attempted' value of the "pdl-override- | If the Printer supports the 'attempted' value of the "pdl-override- | |||
| supported" attribute, then these override values could replace values | supported" attribute, then these override values could replace values | |||
| specified within the document data. This is not the intent of the | specified within the document data. This is not the intent of the | |||
| default value mechanism. A default value for an attribute is used only | default value mechanism. A default value for an attribute is used only | |||
| if the create request did not specify that attribute (or it was ignored | if the create request did not specify that attribute (or it was ignored | |||
| when allowed by "ipp-attribute-fidelity" being 'false') and no value was | when allowed by "ipp-attribute-fidelity" being 'false') and no value was | |||
| provided within the content of the document data. | provided within the content of the document data. | |||
| skipping to change at page 40, line 27 ¶ | skipping to change at page 46, line 48 ¶ | |||
| If the client does not supply a value for some Job Template attribute, | If the client does not supply a value for some Job Template attribute, | |||
| and the Printer does not support that attribute, as far as IPP is | and the Printer does not support that attribute, as far as IPP is | |||
| concerned, the result of processing that Job (with respect to the | concerned, the result of processing that Job (with respect to the | |||
| missing attribute) is undefined. | missing attribute) is undefined. | |||
| 3.1.2.3.5 Return one of the success status codes | 3.1.2.3.5 Return one of the success status codes | |||
| Once the Job object has been created, the Printer object accepts the | Once the Job object has been created, the Printer object accepts the | |||
| request and returns to the client: | request and returns to the client: | |||
| (1) the 'successful-ok' status code, if there are no unsupported or | 1. the 'successful-ok' status code, if there are no unsupported or | |||
| conflicting Job Template attributes or values. | conflicting Job Template attributes or values. | |||
| (2) the 'successful-ok-conflicting-attributes' status code, if there | 2. the 'successful-ok-conflicting-attributes' status code, if there | |||
| are any conflicting Job Template attribute or values. | are any conflicting Job Template attribute or values. | |||
| (3) the 'successful-ok-ignored-or-substituted-attributes' status | ||||
| code, if there are only unsupported Job Template attributes or | Expires November 30, 2000 | |||
| values. | ||||
| 3. the 'successful-ok-ignored-or-substituted-attributes' status code, | ||||
| if there are only unsupported Job Template attributes or values. | ||||
| Note: Unsupported Operation attributes or values that are returned do | Note: Unsupported Operation attributes or values that are returned do | |||
| not affect the status returned in this step. If the unsupported | not affect the status returned in this step. If the unsupported | |||
| Operation attribute was a serious error, the above already rejected the | Operation attribute was a serious error, the above already rejected the | |||
| request in a previous step. If control gets to this step with | request in a previous step. If control gets to this step with | |||
| unsupported Operation attributes being returned, they are not serious | unsupported Operation attributes being returned, they are not serious | |||
| errors. | errors. | |||
| The Printer object also returns Job status attributes that indicate the | The Printer object also returns Job status attributes that indicate the | |||
| initial state of the Job ('pending', 'pending-held', 'processing', | initial state of the Job ('pending', 'pending-held', 'processing', | |||
| skipping to change at page 41, line 4 ¶ | skipping to change at page 47, line 32 ¶ | |||
| The Printer object accepts the appended Document Content data and either | The Printer object accepts the appended Document Content data and either | |||
| starts it printing, or spools it for later processing. | starts it printing, or spools it for later processing. | |||
| 3.1.2.3.7 Scheduling and Starting to Process the Job | 3.1.2.3.7 Scheduling and Starting to Process the Job | |||
| The Printer object uses its own configuration and implementation | The Printer object uses its own configuration and implementation | |||
| specific algorithms for scheduling the Job in the correct processing | specific algorithms for scheduling the Job in the correct processing | |||
| order. Once the Printer object begins processing the Job, the Printer | order. Once the Printer object begins processing the Job, the Printer | |||
| changes the Job's state to 'processing'. If the Printer object supports | changes the Job's state to 'processing'. If the Printer object supports | |||
| Expires March 27, 2000 | ||||
| PDL override (the "pdl-override-supported" attribute set to | PDL override (the "pdl-override-supported" attribute set to | |||
| 'attempted'), the implementation does its best to see that IPP | 'attempted'), the implementation does its best to see that IPP | |||
| attributes take precedence over embedded instructions in the document | attributes take precedence over embedded instructions in the document | |||
| data. | data. | |||
| 3.1.2.3.8 Completing the Job | 3.1.2.3.8 Completing the Job | |||
| The Printer object continues to process the Job until it can move the | The Printer object continues to process the Job until it can move the | |||
| Job into the 'completed' state. If an Cancel-Job operation is received, | Job into the 'completed' state. If an Cancel-Job operation is received, | |||
| the implementation eventually moves the Job into the 'canceled' state. | the implementation eventually moves the Job into the 'canceled' state. | |||
| If the system encounters errors during processing that do not allow it | If the system encounters errors during processing that do not allow it | |||
| to progress the Job into a completed state, the implementation halts all | to progress the Job into a completed state, the implementation halts all | |||
| processing, cleans up any resources, and moves the Job into the | processing, cleans up any resources, and moves the Job into the | |||
| 'aborted' state. | 'aborted' state. | |||
| 3.1.2.3.9 Destroying the Job after completion | 3.1.2.3.9 Destroying the Job after completion | |||
| Once the Job moves to the 'completed', 'aborted', or 'canceled' state, | Once the Job moves to the 'completed', 'aborted', or 'canceled' state, | |||
| it is an implementation decision as to when to destroy the Job object | it is an implementation decision as to when to destroy the Job object | |||
| Expires November 30, 2000 | ||||
| and release all associated resources. Once the Job has been destroyed, | and release all associated resources. Once the Job has been destroyed, | |||
| the Printer would return either the "client-error-not-found" or "client- | the Printer would return either the "client-error-not-found" or "client- | |||
| error-gone" status codes for operations directed at that Job. | error-gone" status codes for operations directed at that Job. | |||
| Note: the Printer object SHOULD NOT re-use a "job-uri" or "job-id" | Note: the Printer object SHOULD NOT re-use a "job-uri" or "job-id" | |||
| value for a sufficiently long time after a job has been destroyed, so | value for a sufficiently long time after a job has been destroyed, so | |||
| that stale references kept by clients are less likely to access the | that stale references kept by clients are less likely to access the | |||
| wrong (newer) job. | wrong (newer) job. | |||
| 3.1.2.3.10 Interaction with "ipp-attribute-fidelity" | 3.1.2.3.10 Interaction with "ipp-attribute-fidelity" | |||
| skipping to change at page 41, line 54 ¶ | skipping to change at page 48, line 35 ¶ | |||
| behave is also compounded by the fact that the two special attributes, | behave is also compounded by the fact that the two special attributes, | |||
| "ipp-attribute-fidelity" and "pdl-"override-supported", apply to the | "ipp-attribute-fidelity" and "pdl-"override-supported", apply to the | |||
| whole job rather than specific values for each attribute. For example, | whole job rather than specific values for each attribute. For example, | |||
| some implementations may be able to override almost all Job Template | some implementations may be able to override almost all Job Template | |||
| attributes except for "number-up". Character Sets, natural languages, | attributes except for "number-up". Character Sets, natural languages, | |||
| and internationalization | and internationalization | |||
| This section discusses character set support, natural language support | This section discusses character set support, natural language support | |||
| and internationalization. | and internationalization. | |||
| 3.1.2.3.11 Character set code conversion support (Issue 1.5) | 3.1.2.3.11 Character set code conversion support | |||
| Expires March 27, 2000 | ||||
| IPP clients and IPP objects are REQUIRED to support UTF-8. They MAY | IPP clients and IPP objects are REQUIRED to support UTF-8. They MAY | |||
| support additional charsets. It is RECOMMENDED that an IPP object also | support additional charsets. It is RECOMMENDED that an IPP object also | |||
| support US-ASCII, since many clients support US-ASCII, and indicate that | support US-ASCII, since many clients support US-ASCII, and indicate that | |||
| UTF-8 and US-ASCII are supported by populating the Printer's "charset- | UTF-8 and US-ASCII are supported by populating the Printer's "charset- | |||
| supported" with 'utf-8' and 'us-ascii' values. An IPP object is | supported" with 'utf-8' and 'us-ascii' values. An IPP object is | |||
| required to code covert with as little loss as possible between the | required to code covert with as little loss as possible between the | |||
| charsets that it supports, as indicated in the Printer's "charsets- | charsets that it supports, as indicated in the Printer's "charsets- | |||
| supported" attribute. | supported" attribute. | |||
| How should the server handle the situation where the "attributes- | How should the server handle the situation where the "attributes- | |||
| charset" of the response itself is "us-ascii", but one or more | charset" of the response itself is "us-ascii", but one or more | |||
| attributes in that response is in the "utf-8" format? | attributes in that response is in the "utf-8" format? | |||
| Expires November 30, 2000 | ||||
| Example: Consider a case where a client sends a Print-Job request with | Example: Consider a case where a client sends a Print-Job request with | |||
| "utf-8" as the value of "attributes-charset" and with the "job-name" | "utf-8" as the value of "attributes-charset" and with the "job-name" | |||
| attribute supplied. Later another client submits a Get-Job-Attribute or | attribute supplied. Later another client submits a Get-Job-Attribute or | |||
| Get-Jobs request. This second request contains the "attributes-charset" | Get-Jobs request. This second request contains the "attributes-charset" | |||
| with value "us-ascii" and "requested-attributes" attribute with exactly | with value "us-ascii" and "requested-attributes" attribute with exactly | |||
| one value "job-name". | one value "job-name". | |||
| According to the IPP-Mod document (section 3.1.4.2), the value of the | According to the IPP-Mod document (section 3.1.4.2), the value of the | |||
| "attributes-charset" for the response of the second request must be "us- | "attributes-charset" for the response of the second request must be "us- | |||
| ascii" since that is the charset specified in the request. The "job- | ascii" since that is the charset specified in the request. The "job- | |||
| skipping to change at page 42, line 57 ¶ | skipping to change at page 49, line 44 ¶ | |||
| One IPP object implementation strategy is to convert all request text | One IPP object implementation strategy is to convert all request text | |||
| and name values to a Unicode internal representation. This is 16-bit | and name values to a Unicode internal representation. This is 16-bit | |||
| and virtually universal. Then convert to the specified operation | and virtually universal. Then convert to the specified operation | |||
| attributes-charset on output. | attributes-charset on output. | |||
| Also it would be smarter for a client to ask for 'utf-8', rather than | Also it would be smarter for a client to ask for 'utf-8', rather than | |||
| 'us-ascii' and throw away characters that it doesn't understand, rather | 'us-ascii' and throw away characters that it doesn't understand, rather | |||
| than depending on the code conversion of the IPP object. | than depending on the code conversion of the IPP object. | |||
| 3.1.2.3.12 What charset to return when an unsupported charset is | 3.1.2.3.12 What charset to return when an unsupported charset is | |||
| requested (Issue 1.19)? | requested (Issue 1.19)? | |||
| Expires March 27, 2000 | ||||
| Section 3.1.4.1 Request Operation attributes was clarified in November | Section 3.1.4.1 Request Operation attributes was clarified in November | |||
| 1998 as follows: | 1998 as follows: | |||
| All clients and IPP objects MUST support the 'utf-8' charset [RFC2044] | All clients and IPP objects MUST support the 'utf-8' charset [RFC2044] | |||
| and MAY support additional charsets provided that they are registered | and MAY support additional charsets provided that they are registered | |||
| with IANA [IANA-CS]. If the Printer object does not support the client | with IANA [IANA-CS]. If the Printer object does not support the client | |||
| supplied charset value, the Printer object MUST reject the request, set | supplied charset value, the Printer object MUST reject the request, set | |||
| Expires November 30, 2000 | ||||
| the "attributes-charset" to 'utf-8' in the response, and return the | the "attributes-charset" to 'utf-8' in the response, and return the | |||
| 'client-error-charset-not-supported' status code and any 'text' or | 'client-error-charset-not-supported' status code and any 'text' or | |||
| 'name' attributes using the 'utf-8' charset. | 'name' attributes using the 'utf-8' charset. | |||
| Since the client and IPP object MUST support UTF-8, returning any text | Since the client and IPP object MUST support UTF-8, returning any text | |||
| or name attributes in UTF-8 when the client requests a charset that is | or name attributes in UTF-8 when the client requests a charset that is | |||
| not supported should allow the client to display the text or name. | not supported should allow the client to display the text or name. | |||
| Since such an error is a client error, rather than a user error, the | Since such an error is a client error, rather than a user error, the | |||
| client should check the status code first so that it can avoid | client should check the status code first so that it can avoid | |||
| skipping to change at page 43, line 35 ¶ | skipping to change at page 50, line 28 ¶ | |||
| Furthermore, [ipp-mod] section 14.1.4.14 client-error-charset-not- | Furthermore, [ipp-mod] section 14.1.4.14 client-error-charset-not- | |||
| supported (0x040D) was clarified in November 1998 as follows: | supported (0x040D) was clarified in November 1998 as follows: | |||
| For any operation, if the IPP Printer does not support the charset | For any operation, if the IPP Printer does not support the charset | |||
| supplied by the client in the "attributes-charset" operation attribute, | supplied by the client in the "attributes-charset" operation attribute, | |||
| the Printer MUST reject the operation and return this status and any | the Printer MUST reject the operation and return this status and any | |||
| 'text' or 'name' attributes using the 'utf-8' charset (see Section | 'text' or 'name' attributes using the 'utf-8' charset (see Section | |||
| 3.1.4.1). | 3.1.4.1). | |||
| 3.1.2.3.13 Natural Language Override (NLO) (Issue 1.45) | 3.1.2.3.13 Natural Language Override (NLO) | |||
| The 'text' and 'name' attributes each have two forms. One has an | The 'text' and 'name' attributes each have two forms. One has an | |||
| implicit natural language, and the other has an explicit natural | implicit natural language, and the other has an explicit natural | |||
| language. The 'textWithoutLanguage' and 'textWithLanguage' are the two | language. The 'textWithoutLanguage' and 'textWithLanguage' are the two | |||
| 'text' forms. The 'nameWithoutLanguage" and 'nameWithLanguage are the | 'text' forms. The 'nameWithoutLanguage" and 'nameWithLanguage are the | |||
| two 'name' forms. If a receiver (IPP object or IPP client) supports an | two 'name' forms. If a receiver (IPP object or IPP client) supports an | |||
| attribute with attribute syntax 'text', it MUST support both forms in a | attribute with attribute syntax 'text', it MUST support both forms in a | |||
| request and a response. A sender (IPP client or IPP object) MAY send | request and a response. A sender (IPP client or IPP object) MAY send | |||
| either form for any such attribute. When a sender sends a | either form for any such attribute. When a sender sends a | |||
| WithoutLanguage form, the implicit natural language is specified in the | WithoutLanguage form, the implicit natural language is specified in the | |||
| skipping to change at page 44, line 4 ¶ | skipping to change at page 50, line 51 ¶ | |||
| When a sender sends a WithLanguage form, it MAY be different from the | When a sender sends a WithLanguage form, it MAY be different from the | |||
| implicit natural language supplied by the sender or it MAY be the same. | implicit natural language supplied by the sender or it MAY be the same. | |||
| The receiver MUST treat either form equivalently. | The receiver MUST treat either form equivalently. | |||
| There is an implementation decision for senders, whether to always send | There is an implementation decision for senders, whether to always send | |||
| the WithLanguage forms or use the WithoutLanguage form when the | the WithLanguage forms or use the WithoutLanguage form when the | |||
| attribute's natural language is the same as the request or response. | attribute's natural language is the same as the request or response. | |||
| The former approach makes the sender implementation simpler. The latter | The former approach makes the sender implementation simpler. The latter | |||
| approach is more efficient on the wire and allows inter-working with | approach is more efficient on the wire and allows inter-working with | |||
| Expires March 27, 2000 | ||||
| non-conforming receivers that fail to support the WithLanguage forms. | non-conforming receivers that fail to support the WithLanguage forms. | |||
| Expires November 30, 2000 | ||||
| As each approach have advantages, the choice is completely up to the | As each approach have advantages, the choice is completely up to the | |||
| implementer of the sender. | implementer of the sender. | |||
| Furthermore, when a client receives a 'text' or 'name' job attribute | Furthermore, when a client receives a 'text' or 'name' job attribute | |||
| that it had previously supplied, that client MUST NOT expect to see the | that it had previously supplied, that client MUST NOT expect to see the | |||
| attribute in the same form, i.e., in the same WithoutLanguage or | attribute in the same form, i.e., in the same WithoutLanguage or | |||
| WithLanguage form as the client supplied when it created the job. The | WithLanguage form as the client supplied when it created the job. The | |||
| IPP object is free to transform the attribute from the WithLanguage form | IPP object is free to transform the attribute from the WithLanguage form | |||
| to the WithoutLanguage form and vice versa, as long as the natural | to the WithoutLanguage form and vice versa, as long as the natural | |||
| language is preserved. However, in order to meet this latter | language is preserved. However, in order to meet this latter | |||
| skipping to change at page 44, line 54 ¶ | skipping to change at page 52, line 5 ¶ | |||
| (unrequested) Job Attribute which then specified the implicit natural | (unrequested) Job Attribute which then specified the implicit natural | |||
| language for any other WithoutLanguage job attributes returned in the | language for any other WithoutLanguage job attributes returned in the | |||
| response for that job. Interoperability testing of early | response for that job. Interoperability testing of early | |||
| implementations showed that no one was implementing the job-level NLO in | implementations showed that no one was implementing the job-level NLO in | |||
| Get-Job responses. So the job-level NLO was eliminated from the Get- | Get-Job responses. So the job-level NLO was eliminated from the Get- | |||
| Jobs response. This simplification makes all requests and responses | Jobs response. This simplification makes all requests and responses | |||
| consistent in that the implicit natural language for any WithoutLanguage | consistent in that the implicit natural language for any WithoutLanguage | |||
| 'text' or 'name' form is always supplied in the request's or response's | 'text' or 'name' form is always supplied in the request's or response's | |||
| "attributes-natural-language" operation attribute. | "attributes-natural-language" operation attribute. | |||
| 3.1.3Status codes returned by operation (Issue 1.50) | Expires November 30, 2000 | |||
| 3.1.3 Status codes returned by operation | ||||
| This section corresponds to [IPP-MOD] section 3.1.6 "Operation Response | This section corresponds to [IPP-MOD] section 3.1.6 "Operation Response | |||
| Status Codes and Status Messages". This section lists all status codes | Status Codes and Status Messages". This section lists all status codes | |||
| once in the first operation (Print-Job). Then it lists the status codes | once in the first operation (Print-Job). Then it lists the status codes | |||
| Expires March 27, 2000 | ||||
| that are different or specialized for subsequent operations under each | that are different or specialized for subsequent operations under each | |||
| operation. | operation. | |||
| 3.1.3.1 Printer Operations | 3.1.3.1 Printer Operations | |||
| 3.1.3.1.1 Print-Job | 3.1.3.1.1 Print-Job | |||
| The Printer object MUST return one of the following "status-code" values | The Printer object MUST return one of the following "status-code" values | |||
| for the indicated reason. Whether all of the document data has been | for the indicated reason. Whether all of the document data has been | |||
| accepted or not before returning the success or error response depends | accepted or not before returning the success or error response depends | |||
| skipping to change at page 45, line 35 ¶ | skipping to change at page 52, line 40 ¶ | |||
| values were substituted with supported values or were ignored. | values were substituted with supported values or were ignored. | |||
| Unsupported attributes, attribute syntax's, or values MUST be | Unsupported attributes, attribute syntax's, or values MUST be | |||
| returned in the Unsupported Attributes group of the response. | returned in the Unsupported Attributes group of the response. | |||
| successful-ok-conflicting-attributes: some supplied attribute values | successful-ok-conflicting-attributes: some supplied attribute values | |||
| conflicted with the values of other supplied attributes and were | conflicted with the values of other supplied attributes and were | |||
| either substituted or ignored. Attributes or values which conflict | either substituted or ignored. Attributes or values which conflict | |||
| with other attributes and have been substituted or ignored MUST be | with other attributes and have been substituted or ignored MUST be | |||
| returned in the Unsupported Attributes group of the response as | returned in the Unsupported Attributes group of the response as | |||
| supplied by the client. | supplied by the client. | |||
| [ipp-mod] section 3.1.6 Operation Status Codes and Messages states | [ipp-mod] section 3.1.6 Operation Status Codes and Messages states: | |||
| (Issue 1.19): | ||||
| If the Printer object supports the "status-message" operation attribute, | If the Printer object supports the "status-message" operation attribute, | |||
| it SHOULD use the REQUIRED 'utf-8' charset to return a status message | it SHOULD use the REQUIRED 'utf-8' charset to return a status message | |||
| for the following error status codes (see section 13 in [IPP-MOD]): | for the following error status codes (see section 13 in [IPP-MOD]): | |||
| 'client-error-bad-request', 'client-error-charset-not-supported', | 'client-error-bad-request', 'client-error-charset-not-supported', | |||
| 'server-error-internal-error', 'server-error-operation-not-supported', | 'server-error-internal-error', 'server-error-operation-not-supported', | |||
| and 'server-error-version-not-supported'. In this case, it MUST set the | and 'server-error-version-not-supported'. In this case, it MUST set the | |||
| value of the "attributes-charset" operation attribute to 'utf-8' in the | value of the "attributes-charset" operation attribute to 'utf-8' in the | |||
| error response. | error response. | |||
| Expires November 30, 2000 | ||||
| For the following error status codes, no job is created and no "job-id" | For the following error status codes, no job is created and no "job-id" | |||
| or "job-uri" is returned: | or "job-uri" is returned: | |||
| client-error-bad-request: The request syntax does not conform to the | client-error-bad-request: The request syntax does not conform to the | |||
| specification. | specification. | |||
| client-error-forbidden: The request is being refused for | client-error-forbidden: The request is being refused for | |||
| authorization or authentication reasons. The implementation | authorization or authentication reasons. The implementation | |||
| security policy is to not reveal whether the failure is one of | security policy is to not reveal whether the failure is one of | |||
| authentication or authorization. | authentication or authorization. | |||
| client-error-not-authenticated: Either the request requires | client-error-not-authenticated: Either the request requires | |||
| authentication information to be supplied or the authentication | authentication information to be supplied or the authentication | |||
| information is not sufficient for authorization. | information is not sufficient for authorization. | |||
| Expires March 27, 2000 | ||||
| client-error-not-authorized: The requester is not authorized to | client-error-not-authorized: The requester is not authorized to | |||
| perform the request on the target object. | perform the request on the target object. | |||
| client-error-not-possible: The request cannot be carried out because | client-error-not-possible: The request cannot be carried out because | |||
| of the state of the system. See also 'server-error-not-accepting- | of the state of the system. See also 'server-error-not-accepting- | |||
| jobs' status code, which MUST take precedence if the Printer | jobs' status code, which MUST take precedence if the Printer | |||
| object's "printer-accepting-jobs" attribute is 'false'. | object's "printer-accepting-jobs" attribute is 'false'. | |||
| client-error-timeout: not applicable. | client-error-timeout: not applicable. | |||
| client-error-not-found: the target object does not exist. | client-error-not-found: the target object does not exist. | |||
| client-error-gone: the target object no longer exists and no | client-error-gone: the target object no longer exists and no | |||
| forwarding address is known. | forwarding address is known. | |||
| skipping to change at page 46, line 42 ¶ | skipping to change at page 54, line 4 ¶ | |||
| supported and the client supplied the "ipp-attributes-fidelity" | supported and the client supplied the "ipp-attributes-fidelity" | |||
| operation attribute with a 'true' value. They MUST be returned in | operation attribute with a 'true' value. They MUST be returned in | |||
| the Unsupported Attributes Group as explained below. | the Unsupported Attributes Group as explained below. | |||
| client-error-uri-scheme-not-supported: not applicable. | client-error-uri-scheme-not-supported: not applicable. | |||
| client-error-charset-not-supported: the charset supplied in the | client-error-charset-not-supported: the charset supplied in the | |||
| "attributes-charset" operation attribute is not supported. The | "attributes-charset" operation attribute is not supported. The | |||
| Printer's "configured-charset" MUST be returned in the response as | Printer's "configured-charset" MUST be returned in the response as | |||
| the value of the "attributes-charset" operation attribute and used | the value of the "attributes-charset" operation attribute and used | |||
| for any 'text' and 'name' attributes returned in the error | for any 'text' and 'name' attributes returned in the error | |||
| response. This error SHOULD take precedence over any other error, | response. This error SHOULD take precedence over any other error, | |||
| Expires November 30, 2000 | ||||
| unless the request syntax is so bad that the client's supplied | unless the request syntax is so bad that the client's supplied | |||
| "attributes-charset" cannot be determined. | "attributes-charset" cannot be determined. | |||
| client-error-conflicting-attributes: one or more supplied attribute | client-error-conflicting-attributes: one or more supplied attribute | |||
| values conflicted with each other and the client supplied the "ipp- | values conflicted with each other and the client supplied the "ipp- | |||
| attributes-fidelity" operation attribute with a 'true' value. They | attributes-fidelity" operation attribute with a 'true' value. They | |||
| MUST be returned in the Unsupported Attributes Group as explained | MUST be returned in the Unsupported Attributes Group as explained | |||
| below. | below. | |||
| server-error-internal-error: an unexpected condition prevents the | server-error-internal-error: an unexpected condition prevents the | |||
| request from being fulfilled. | request from being fulfilled. | |||
| server-error-operation-not-supported: not applicable (since Print- | server-error-operation-not-supported: not applicable (since Print- | |||
| Job is REQUIRED). | Job is REQUIRED). | |||
| server-error-service-unavailable: the service is temporarily | server-error-service-unavailable: the service is temporarily | |||
| overloaded. | overloaded. | |||
| server-error-version-not-supported: the version in the request is | server-error-version-not-supported: the version in the request is | |||
| not supported. The "closest" version number supported MUST be | not supported. The "closest" version number supported MUST be | |||
| returned in the response. | returned in the response. | |||
| server-error-device-error: a device error occurred while receiving | server-error-device-error: a device error occurred while receiving | |||
| or spooling the request or document data or the IPP Printer object | or spooling the request or document data or the IPP Printer object | |||
| can only accept one job at a time. | can only accept one job at a time. | |||
| Expires March 27, 2000 | ||||
| server-error-temporary-error: a temporary error such as a buffer | server-error-temporary-error: a temporary error such as a buffer | |||
| full write error, a memory overflow, or a disk full condition | full write error, a memory overflow, or a disk full condition | |||
| occurred while receiving the request and/or the document data. | occurred while receiving the request and/or the document data. | |||
| server-error-not-accepting-jobs: the Printer object's "printer-is- | server-error-not-accepting-jobs: the Printer object's "printer-is- | |||
| not-accepting-jobs" attribute is 'false'. | not-accepting-jobs" attribute is 'false'. | |||
| server-error-busy: the Printer is too busy processing jobs to accept | server-error-busy: the Printer is too busy processing jobs to accept | |||
| another job at this time. | another job at this time. | |||
| server-error-job-canceled: the job has been canceled by an operator | server-error-job-canceled: the job has been canceled by an operator | |||
| or the system while the client was transmitting the document data. | or the system while the client was transmitting the document data. | |||
| skipping to change at page 47, line 32 ¶ | skipping to change at page 55, line 5 ¶ | |||
| description of each status code. | description of each status code. | |||
| client-error-uri-scheme-not-supported: the URI scheme supplied in | client-error-uri-scheme-not-supported: the URI scheme supplied in | |||
| the "document-uri" operation attribute is not supported and is | the "document-uri" operation attribute is not supported and is | |||
| returned in the Unsupported Attributes group. | returned in the Unsupported Attributes group. | |||
| server-error-operation-not-supported: the Print-URI operation is not | server-error-operation-not-supported: the Print-URI operation is not | |||
| supported. | supported. | |||
| 3.1.3.1.3 Validate-Job | 3.1.3.1.3 Validate-Job | |||
| Expires November 30, 2000 | ||||
| All of the Print-Job status codes described in Section 3.1.3.1.1 Print- | All of the Print-Job status codes described in Section 3.1.3.1.1 Print- | |||
| Job Response are applicable to Validate-Job. See Section 13 in [IPP- | Job Response are applicable to Validate-Job. See Section 13 in [IPP- | |||
| MOD] for a more complete description of each status code. | MOD] for a more complete description of each status code. | |||
| 3.1.3.1.4 Create-Job | 3.1.3.1.4 Create-Job | |||
| All of the Print-Job status codes described in Section 3.1.3.1.1 Print- | All of the Print-Job status codes described in Section 3.1.3.1.1 Print- | |||
| Job Response are applicable to Create-Job with the following | Job Response are applicable to Create-Job with the following | |||
| specializations and differences. See Section 13 in [IPP-MOD] for a more | specializations and differences. See Section 13 in [IPP-MOD] for a more | |||
| complete description of each status code. | complete description of each status code. | |||
| server-error-operation-not-supported: the Create-Job operation is | server-error-operation-not-supported: the Create-Job operation is | |||
| not supported. | not supported. | |||
| client-error-multiple-document-jobs-not-supported: while the Create- | ||||
| Job and Send-Document operations are supported, this implementation | ||||
| doesn't support more than one document with data. | ||||
| 3.1.3.1.5 Get-Printer-Attributes | 3.1.3.1.5 Get-Printer-Attributes | |||
| All of the Print-Job status codes described in Section 3.1.3.1.1 Print- | All of the Print-Job status codes described in Section 3.1.3.1.1 Print- | |||
| Job Response are applicable to the Get-Printer-Attributes operation with | Job Response are applicable to the Get-Printer-Attributes operation with | |||
| the following specialization's and differences. See Section 13 in | the following specialization's and differences. See Section 13 in | |||
| [IPP-MOD] for a more complete description of each status code. | [IPP-MOD] for a more complete description of each status code. | |||
| For the following success status codes, the requested attributes are | For the following success status codes, the requested attributes are | |||
| returned in Group 3 in the response: | returned in Group 3 in the response: | |||
| successful-ok: no request attributes were substituted or ignored | successful-ok: no request attributes were substituted or ignored | |||
| (same as Print-Job) and no requested attributes were unsupported. | (same as Print-Job) and no requested attributes were unsupported. | |||
| Expires March 27, 2000 | ||||
| successful-ok-ignored-or-substituted-attributes: same as Print-Job, | successful-ok-ignored-or-substituted-attributes: same as Print-Job, | |||
| except the "requested-attributes" operation attribute MAY, but NEED | except the "requested-attributes" operation attribute MAY, but NEED | |||
| NOT, be returned with the unsupported values. | NOT, be returned with the unsupported values. | |||
| successful-ok-conflicting-attributes: same as Print-Job. | successful-ok-conflicting-attributes: same as Print-Job. | |||
| For the error status codes, Group 3 is returned containing no attributes | For the error status codes, Group 3 is returned containing no attributes | |||
| or is not returned at all: | or is not returned at all: | |||
| client-error-not-possible: Same as Print-Job, in addition the | client-error-not-possible: Same as Print-Job, in addition the | |||
| Printer object is not accepting any requests. | Printer object is not accepting any requests. | |||
| client-error-request-entity-too-large: same as Print-job, except | client-error-request-entity-too-large: same as Print-job, except | |||
| that no print data is involved. | that no print data is involved. | |||
| client-error-attributes-or-values-not-supported: not applicable, | client-error-attributes-or-values-not-supported: not applicable, | |||
| since unsupported operation attributes MUST be ignored and | since unsupported operation attributes MUST be ignored and | |||
| 'successful-ok-ignored-or-substituted-attributes' returned. | 'successful-ok-ignored-or-substituted-attributes' returned. | |||
| client-error-conflicting-attributes: same as Print-Job, except that | client-error-conflicting-attributes: same as Print-Job, except that | |||
| "ipp-attribute-fidelity" is not involved. | "ipp-attribute-fidelity" is not involved. | |||
| server-error-operation-not-supported: not applicable (since Get- | server-error-operation-not-supported: not applicable (since Get- | |||
| Printer-Attributes is REQUIRED). | Printer-Attributes is REQUIRED). | |||
| Expires November 30, 2000 | ||||
| server-error-device-error: same as Print-Job, except that no | server-error-device-error: same as Print-Job, except that no | |||
| document data is involved. | document data is involved. | |||
| server-error-temporary-error: same as Print-Job, except that no | server-error-temporary-error: same as Print-Job, except that no | |||
| document data is involved. | document data is involved. | |||
| server-error-not-accepting-jobs: not applicable.. | server-error-not-accepting-jobs: not applicable.. | |||
| server-error-busy: same as Print-Job, except the IPP object is too | server-error-busy: same as Print-Job, except the IPP object is too | |||
| busy to accept even query requests. | busy to accept even query requests. | |||
| server-error-job-canceled: not applicable.. | server-error-job-canceled: not applicable.. | |||
| 3.1.3.1.6 Get-Jobs | 3.1.3.1.6 Get-Jobs | |||
| skipping to change at page 49, line 4 ¶ | skipping to change at page 56, line 44 ¶ | |||
| or is not returned at all. The following brief error status code | or is not returned at all. The following brief error status code | |||
| descriptions contain unique information for use with Get-Jobs operation. | descriptions contain unique information for use with Get-Jobs operation. | |||
| See section 14 for the other error status codes that apply uniformly to | See section 14 for the other error status codes that apply uniformly to | |||
| all operations: | all operations: | |||
| client-error-not-possible: Same as Print-Job, in addition the | client-error-not-possible: Same as Print-Job, in addition the | |||
| Printer object is not accepting any requests. | Printer object is not accepting any requests. | |||
| client-error-request-entity-too-large: same as Print-job, except | client-error-request-entity-too-large: same as Print-job, except | |||
| that no print data is involved. | that no print data is involved. | |||
| client-error-document-format-not-supported: not applicable. | client-error-document-format-not-supported: not applicable. | |||
| Expires March 27, 2000 | ||||
| client-error-attributes-or-values-not-supported: not applicable, | client-error-attributes-or-values-not-supported: not applicable, | |||
| since unsupported operation attributes MUST be ignored and | since unsupported operation attributes MUST be ignored and | |||
| 'successful-ok-ignored-or-substituted-attributes' returned. | 'successful-ok-ignored-or-substituted-attributes' returned. | |||
| client-error-conflicting-attributes: same as Print-Job, except that | client-error-conflicting-attributes: same as Print-Job, except that | |||
| "ipp-attribute-fidelity" is not involved. | "ipp-attribute-fidelity" is not involved. | |||
| server-error-operation-not-supported: not applicable (since Get-Jobs | server-error-operation-not-supported: not applicable (since Get-Jobs | |||
| is REQUIRED). | is REQUIRED). | |||
| server-error-device-error: same as Print-Job, except that no | server-error-device-error: same as Print-Job, except that no | |||
| document data is involved. | document data is involved. | |||
| server-error-temporary-error: same as Print-Job, except that no | server-error-temporary-error: same as Print-Job, except that no | |||
| document data is involved. | document data is involved. | |||
| server-error-not-accepting-jobs: not applicable. | server-error-not-accepting-jobs: not applicable. | |||
| Expires November 30, 2000 | ||||
| server-error-job-canceled: not applicable. | server-error-job-canceled: not applicable. | |||
| 3.1.3.1.7 Pause-Printer | 3.1.3.1.7 Pause-Printer | |||
| All of the Print-Job status codes described in Section 3.1.3.1.1 Print- | All of the Print-Job status codes described in Section 3.1.3.1.1 Print- | |||
| Job Response are applicable to Pause-Printer with the following | Job Response are applicable to Pause-Printer with the following | |||
| specializations and differences. See Section 13 in [IPP-MOD] for a more | specializations and differences. See Section 13 in [IPP-MOD] for a more | |||
| complete description of each status code. | complete description of each status code. | |||
| For the following success status codes, the Printer object is being | For the following success status codes, the Printer object is being | |||
| skipping to change at page 50, line 5 ¶ | skipping to change at page 57, line 46 ¶ | |||
| server-error-operation-not-supported: the Pause-Printer operation is | server-error-operation-not-supported: the Pause-Printer operation is | |||
| not supported. | not supported. | |||
| server-error-device-error: not applicable. | server-error-device-error: not applicable. | |||
| server-error-temporary-error: same as Print-Job, except no document | server-error-temporary-error: same as Print-Job, except no document | |||
| data is involved. | data is involved. | |||
| server-error-not-accepting-jobs: not applicable. | server-error-not-accepting-jobs: not applicable. | |||
| server-error-job-canceled: not applicable. | server-error-job-canceled: not applicable. | |||
| 3.1.3.1.8 Resume-Printer | 3.1.3.1.8 Resume-Printer | |||
| Expires March 27, 2000 | ||||
| All of the Print-Job status code descriptions in Section 3.1.3.1.1 | All of the Print-Job status code descriptions in Section 3.1.3.1.1 | |||
| Print-Job Response with the specialization's described for Pause-Printer | Print-Job Response with the specialization's described for Pause-Printer | |||
| are applicable to Resume-Printer. See Section 13 in [IPP-MOD] for a | are applicable to Resume-Printer. See Section 13 in [IPP-MOD] for a | |||
| more complete description of each status code. | more complete description of each status code. | |||
| For the following success status codes, the Printer object resumes | For the following success status codes, the Printer object resumes | |||
| scheduling jobs on all its devices. | scheduling jobs on all its devices. | |||
| Expires November 30, 2000 | ||||
| successful-ok: no request attributes were substituted or ignored | successful-ok: no request attributes were substituted or ignored | |||
| (same as Print-Job). | (same as Print-Job). | |||
| successful-ok-ignored-or-substituted-attributes: same as Print-Job. | successful-ok-ignored-or-substituted-attributes: same as Print-Job. | |||
| successful-ok-conflicting-attributes: same as Print-Job. | successful-ok-conflicting-attributes: same as Print-Job. | |||
| For any of the error status codes, the Printer object does not resume | For any of the error status codes, the Printer object does not resume | |||
| scheduling jobs. | scheduling jobs. | |||
| server-error-operation-not-supported: the Resume-Printer operation is | server-error-operation-not-supported: the Resume-Printer operation is | |||
| not supported. | not supported. | |||
| 3.1.3.1.8.1 What about Printers unable to change state due to an error | ||||
| condition? | ||||
| If, in case, the IPP printer is unable to change its state due to some | ||||
| problem with the actual printer device (say, it is shut down or there is | ||||
| a media-jam as indicated in [ipp-mod]), what should be the result of the | ||||
| "Resume-printer" operation? Should it still change the 'printer-state- | ||||
| reasons' and return success or should it fail ? | ||||
| The 'resume-printer' operation must clear the 'paused' or 'moving-to- | ||||
| paused' 'printer-state-message'. The operation must return a | ||||
| 'successful-ok' status code. | ||||
| 3.1.3.1.8.2 How is 'printer-state' handled on Resume-Printer? | ||||
| If "Resume-Printer" succeeds, what should be the value of 'Printer- | ||||
| state' and who should take care of the 'Printer-state' later on ? | ||||
| The "Resume-Printer" operation may change the "printer-state-reasons" | ||||
| value. | ||||
| The "printer-state" will change to one of three states: | ||||
| 1. 'idle' - no additional jobs and no error conditions present | ||||
| 2. 'processing' - job available and no error conditions present | ||||
| 3. current state (i.e. no change) an error condition is present (e.g. | ||||
| media jam) | ||||
| In the third case the 'printer-state-reason' will be cleared by | ||||
| automata when it detects the error condition no longer exists. The | ||||
| 'printer-state' will move to 'idle' or 'processing' when conditions | ||||
| permit. (i.e. no more error conditions) | ||||
| Expires November 30, 2000 | ||||
| 3.1.3.1.9 Purge-Printer | 3.1.3.1.9 Purge-Printer | |||
| All of the Print-Job status code descriptions in Section 3.1.3.1.1 | All of the Print-Job status code descriptions in Section 3.1.3.1.1 | |||
| Print-Job Response with the specialization's described for Pause-Printer | Print-Job Response with the specialization's described for Pause-Printer | |||
| are applicable to Purge-Printer. See Section 13 in [IPP-MOD] for a more | are applicable to Purge-Printer. See Section 13 in [IPP-MOD] for a more | |||
| complete description of each status code. | complete description of each status code. | |||
| For the following success status codes, the Printer object purges all | For the following success status codes, the Printer object purges all | |||
| it's jobs. | it's jobs. | |||
| skipping to change at page 51, line 4 ¶ | skipping to change at page 59, line 43 ¶ | |||
| the following specialization's and differences. See Section 13 in | the following specialization's and differences. See Section 13 in | |||
| [IPP-MOD] for a more complete description of each status code. | [IPP-MOD] for a more complete description of each status code. | |||
| For the following success status codes, the document has been added to | For the following success status codes, the document has been added to | |||
| the specified Job object and the job's "number-of-documents" attribute | the specified Job object and the job's "number-of-documents" attribute | |||
| has been incremented: | has been incremented: | |||
| successful-ok: no request attributes were substituted or ignored | successful-ok: no request attributes were substituted or ignored | |||
| (same as Print-Job). | (same as Print-Job). | |||
| successful-ok-ignored-or-substituted-attributes: same as Print-Job. | successful-ok-ignored-or-substituted-attributes: same as Print-Job. | |||
| Expires March 27, 2000 | ||||
| successful-ok-conflicting-attributes: same as Print-Job. | successful-ok-conflicting-attributes: same as Print-Job. | |||
| For the error status codes, no document has been added to the Job object | For the error status codes, no document has been added to the Job object | |||
| and the job's "number-of-documents" attribute has not been incremented: | and the job's "number-of-documents" attribute has not been incremented: | |||
| client-error-not-possible: Same as Print-Job, except that the | client-error-not-possible: Same as Print-Job, except that the | |||
| Printer's "printer-is-accepting-jobs" attribute is not involved, so | Printer's "printer-is-accepting-jobs" attribute is not involved, so | |||
| that the client is able to finish submitting a multi-document job | that the client is able to finish submitting a job that was created | |||
| after this attribute has been set to 'true'. Another condition is | with a Create-Job operation after this attribute has been set to | |||
| that the state of the job precludes Send-Document, i.e., the job | 'true'. Another condition is that the state of the job precludes | |||
| has already been closed out by the client. However, if the IPP | Send-Document, i.e., the job has already been closed out by the | |||
| Printer closed out the job due to timeout, the 'client-error- | client. However, if the IPP Printer closed out the job due to | |||
| timeout' error status SHOULD be returned instead. | ||||
| Expires November 30, 2000 | ||||
| timeout, the 'client-error-timeout' error status SHOULD be | ||||
| returned instead. | ||||
| client-error-timeout: This request was sent after the Printer closed | client-error-timeout: This request was sent after the Printer closed | |||
| the job, because it has not received a Send-Document or Send-URI | the job, because it has not received a Send-Document or Send-URI | |||
| operation within the Printer's "multiple-operation-time-out" period | operation within the Printer's "multiple-operation-time-out" period | |||
| . | . | |||
| client-error-request-entity-too-large: same as Print-Job. | client-error-request-entity-too-large: same as Print-Job. | |||
| client-error-conflicting-attributes: same as Print-Job, except that | client-error-conflicting-attributes: same as Print-Job, except that | |||
| "ipp-attributes-fidelity" operation attribute is not involved.. | "ipp-attributes-fidelity" operation attribute is not involved.. | |||
| server-error-operation-not-supported: the Send-Document request is | server-error-operation-not-supported: the Send-Document request is | |||
| not supported. | not supported. | |||
| server-error-not-accepting-jobs: not applicable. | server-error-not-accepting-jobs: not applicable. | |||
| skipping to change at page 52, line 5 ¶ | skipping to change at page 60, line 50 ¶ | |||
| complete description of each status code. | complete description of each status code. | |||
| For the following success status codes, the Job object is being canceled | For the following success status codes, the Job object is being canceled | |||
| or has been canceled: | or has been canceled: | |||
| successful-ok: no request attributes were substituted or ignored | successful-ok: no request attributes were substituted or ignored | |||
| (same as Print-Job). | (same as Print-Job). | |||
| successful-ok-ignored-or-substituted-attributes: same as Print-Job. | successful-ok-ignored-or-substituted-attributes: same as Print-Job. | |||
| successful-ok-conflicting-attributes: same as Print-Job. | successful-ok-conflicting-attributes: same as Print-Job. | |||
| Expires March 27, 2000 | ||||
| For any of the error status codes, the Job object has not been canceled | For any of the error status codes, the Job object has not been canceled | |||
| or was previously canceled. | or was previously canceled. | |||
| Expires November 30, 2000 | ||||
| client-error-not-possible: The request cannot be carried out because | client-error-not-possible: The request cannot be carried out because | |||
| of the state of the Job object ('completed', 'canceled', or | of the state of the Job object ('completed', 'canceled', or | |||
| 'aborted') or the state of the system. | 'aborted') or the state of the system. | |||
| client-error-not-found: the target Printer and/or Job object does | client-error-not-found: the target Printer and/or Job object does | |||
| not exist. | not exist. | |||
| client-error-gone: the target Printer and/or Job object no longer | client-error-gone: the target Printer and/or Job object no longer | |||
| exists and no forwarding address is known. | exists and no forwarding address is known. | |||
| client-error-request-entity-too-large: same as Print-Job, except no | client-error-request-entity-too-large: same as Print-Job, except no | |||
| document data is involved. | document data is involved. | |||
| client-error-document-format-not-supported: not applicable. | client-error-document-format-not-supported: not applicable. | |||
| skipping to change at page 52, line 59 ¶ | skipping to change at page 62, line 4 ¶ | |||
| successful-ok-conflicting-attributes: same as Print-Job. | successful-ok-conflicting-attributes: same as Print-Job. | |||
| For the error status codes, Group 3 is returned containing no attributes | For the error status codes, Group 3 is returned containing no attributes | |||
| or is not returned at all. | or is not returned at all. | |||
| client-error-not-possible: Same as Print-Job, in addition the | client-error-not-possible: Same as Print-Job, in addition the | |||
| Printer object is not accepting any requests. | Printer object is not accepting any requests. | |||
| client-error-document-format-not-supported: not applicable. | client-error-document-format-not-supported: not applicable. | |||
| client-error-attributes-or-values-not-supported: not applicable. | client-error-attributes-or-values-not-supported: not applicable. | |||
| client-error-uri-scheme-not-supported: not applicable. | client-error-uri-scheme-not-supported: not applicable. | |||
| client-error-conflicting-attributes: not applicable | ||||
| Expires March 27, 2000 | Expires November 30, 2000 | |||
| client-error-conflicting-attributes: not applicable | ||||
| server-error-operation-not-supported: not applicable (since Get-Job- | server-error-operation-not-supported: not applicable (since Get-Job- | |||
| Attributes is REQUIRED). | Attributes is REQUIRED). | |||
| server-error-device-error: same as Print-Job, except no document | server-error-device-error: same as Print-Job, except no document | |||
| data is involved. | data is involved. | |||
| server-error-temporary-error: sane as Print-Job, except no document | server-error-temporary-error: sane as Print-Job, except no document | |||
| data is involved.. | data is involved.. | |||
| server-error-not-accepting-jobs: not applicable. | server-error-not-accepting-jobs: not applicable. | |||
| server-error-job-canceled: not applicable. | server-error-job-canceled: not applicable. | |||
| 3.1.3.2.5 Hold-Job | 3.1.3.2.5 Hold-Job | |||
| skipping to change at page 53, line 54 ¶ | skipping to change at page 63, line 5 ¶ | |||
| the Printer's "printer-is-accepting-jobs" attribute is not | the Printer's "printer-is-accepting-jobs" attribute is not | |||
| involved. | involved. | |||
| server-error-operation-not-supported: the Hold-Job operation is not | server-error-operation-not-supported: the Hold-Job operation is not | |||
| supported. | supported. | |||
| server-error-device-error: not applicable. | server-error-device-error: not applicable. | |||
| server-error-temporary-error: same as Print-Job, except no document | server-error-temporary-error: same as Print-Job, except no document | |||
| data is involved. | data is involved. | |||
| server-error-not-accepting-jobs: not applicable. | server-error-not-accepting-jobs: not applicable. | |||
| server-error-job-canceled: not applicable. | server-error-job-canceled: not applicable. | |||
| Expires November 30, 2000 | ||||
| 3.1.3.2.6 Release-Job | 3.1.3.2.6 Release-Job | |||
| All of the Print-Job status code descriptions in Section 3.1.3.1.1 | All of the Print-Job status code descriptions in Section 3.1.3.1.1 | |||
| Print-Job Response with the specialization's described for Hold-Job are | Print-Job Response with the specialization's described for Hold-Job are | |||
| Expires March 27, 2000 | ||||
| applicable to Release-Job. See Section 13 in [IPP-MOD] for a more | applicable to Release-Job. See Section 13 in [IPP-MOD] for a more | |||
| complete description of each status code. | complete description of each status code. | |||
| server-error-operation-not-supported: the Release-Job operation is | server-error-operation-not-supported: the Release-Job operation is | |||
| not supported. | not supported. | |||
| 3.1.3.2.7 Restart-Job | 3.1.3.2.7 Restart-Job | |||
| All of the Print-Job status code descriptions in Section 3.1.3.1.1 | All of the Print-Job status code descriptions in Section 3.1.3.1.1 | |||
| Print-Job Response with the specialization's described for Hold-Job are | Print-Job Response with the specialization's described for Hold-Job are | |||
| applicable to Restart-Job. See Section 13 in [IPP-MOD] for a more | applicable to Restart-Job. See Section 13 in [IPP-MOD] for a more | |||
| complete description of each status code. | complete description of each status code. | |||
| server-error-operation-not-supported: the Restart-Job operation is | server-error-operation-not-supported: the Restart-Job operation is | |||
| not supported. | not supported. | |||
| 3.1.4Returning unsupported attributes in Get-Xxxx responses (Issue 1.18) | 3.1.3.2.7.1 Can documents be added to a restarted job? | |||
| Assume I give a Create-Job request along with a set of 5 documents . All | ||||
| the documents get printed and the job state is moved to completed . I | ||||
| issue a Restart-Job request on the job. Now the issue is that, if I try | ||||
| to add new documents to the restarted job, will the IPP Server permit | ||||
| me to do so or return "client-error-not-possible " and again print | ||||
| those 5 jobs? | ||||
| A job can not move to the 'completed' state until all the documents have | ||||
| been processed. The 'last-document' flag indicates when the last | ||||
| document for a job is being sent from the client. This is the semantic | ||||
| equivalent of closing a job. No documents may be added once a job is | ||||
| closed. Section 3.3.7 of the IPP/1.1 model states "The job is moved to | ||||
| the 'pending' job state and restarts the beginning on the same IPP | ||||
| Printer object with the same attribute values." 'number-of-documents' is | ||||
| a job attribute. | ||||
| 3.1.4 Returning unsupported attributes in Get-Xxxx responses (Issue | ||||
| 1.18) | ||||
| In the Get-Printer-Attributes, Get-Jobs, or Get-Job-Attributes | In the Get-Printer-Attributes, Get-Jobs, or Get-Job-Attributes | |||
| responses, the client cannot depend on getting unsupported attributes | responses, the client cannot depend on getting unsupported attributes | |||
| returned in the Unsupported Attributes group that the client requested, | returned in the Unsupported Attributes group that the client requested, | |||
| Expires November 30, 2000 | ||||
| but are not supported by the IPP object. However, such unsupported | but are not supported by the IPP object. However, such unsupported | |||
| requested attributes will not be returned in the Job Attributes or | requested attributes will not be returned in the Job Attributes or | |||
| Printer Attributes group (since they are unsupported). Furthermore, the | Printer Attributes group (since they are unsupported). Furthermore, the | |||
| IPP object is REQUIRED to return the 'successful-ok-ignored-or- | IPP object is REQUIRED to return the 'successful-ok-ignored-or- | |||
| substituted-attributes' status code, so that the client knows that not | substituted-attributes' status code, so that the client knows that not | |||
| all that was requested has been returned. | all that was requested has been returned. | |||
| 3.1.5Sending empty attribute groups (Issue 1.16) | 3.1.5 Sending empty attribute groups | |||
| The [IPP-MOD] and [IPP-PRO] specifications RECOMMEND that a sender not | The [IPP-MOD] and [IPP-PRO] specifications RECOMMEND that a sender not | |||
| send an empty attribute group in a request or a response. However, they | send an empty attribute group in a request or a response. However, they | |||
| REQUIRE a receiver to accept an empty attribute group as equivalent to | REQUIRE a receiver to accept an empty attribute group as equivalent to | |||
| the omission of that group. So a client SHOULD omit the Job Template | the omission of that group. So a client SHOULD omit the Job Template | |||
| Attributes group entirely in a create operation that is not supplying | Attributes group entirely in a create operation that is not supplying | |||
| any Job Template attributes. Similarly, an IPP object SHOULD omit an | any Job Template attributes. Similarly, an IPP object SHOULD omit an | |||
| empty Unsupported Attributes group if there are no unsupported | empty Unsupported Attributes group if there are no unsupported | |||
| attributes to be returned in a response. | attributes to be returned in a response. | |||
| The [IPP-PRO] specification REQUIRES a receiver to be able to receive | The [IPP-PRO] specification REQUIRES a receiver to be able to receive | |||
| either an empty attribute group or an omitted attribute group and treat | either an empty attribute group or an omitted attribute group and treat | |||
| them equivalently. The term "receiver" means an IPP object for a | them equivalently. The term "receiver" means an IPP object for a | |||
| request and a client for a response. The term "sender' means a client | request and a client for a response. The term "sender' means a client | |||
| for a request and an IPP object for a response. | for a request and an IPP object for a response. | |||
| There is an exception to the rule for Get-Jobs when there are no | There is an exception to the rule for Get-Jobs when there are no | |||
| attributes to be returned. [ipp-pro] contains the following paragraph: | attributes to be returned. [IPP-PRO] contains the following paragraph: | |||
| The syntax allows an xxx-attributes-tag to be present when the xxx- | The syntax allows an xxx-attributes-tag to be present when the xxx- | |||
| attribute-sequence that follows is empty. The syntax is defined this way | attribute-sequence that follows is empty. The syntax is defined this way | |||
| to allow for the response of Get-Jobs where no attributes are returned | to allow for the response of Get-Jobs where no attributes are returned | |||
| for some job-objects. Although it is RECOMMENDED that the sender not | for some job-objects. Although it is RECOMMENDED that the sender not | |||
| send an xxx-attributes-tag if there are no attributes (except in the | send an xxx-attributes-tag if there are no attributes (except in the | |||
| Expires March 27, 2000 | ||||
| Get-Jobs response just mentioned), the receiver MUST be able to decode | Get-Jobs response just mentioned), the receiver MUST be able to decode | |||
| such syntax. | such syntax. | |||
| 3.2 Printer Operations | 3.2 Printer Operations | |||
| 3.2.1Print-Job operation | 3.2.1 Print-Job operation | |||
| 3.2.1.1 Flow controlling the data portion of a Print-Job request | 3.2.1.1 Flow controlling the data portion of a Print-Job request | |||
| (Issue 1.22) | (Issue 1.22) | |||
| A paused printer, or one that is stopped due to paper out or jam or | A paused printer, or one that is stopped due to paper out or jam or | |||
| spool space full or buffer space full, may flow control the data of a | spool space full or buffer space full, may flow control the data of a | |||
| Print-Job operation (at the TCP/IP layer), so that the client is not | Print-Job operation (at the TCP/IP layer), so that the client is not | |||
| Expires November 30, 2000 | ||||
| able to send all the document data. Consequently, the Printer will not | able to send all the document data. Consequently, the Printer will not | |||
| return a response until the condition is changed. | return a response until the condition is changed. | |||
| The Printer should not return a Print-Job response with an error code in | The Printer should not return a Print-Job response with an error code in | |||
| any of these conditions, since either the printer will be resumed and/or | any of these conditions, since either the printer will be resumed and/or | |||
| the condition will be freed either by human intervention or as jobs | the condition will be freed either by human intervention or as jobs | |||
| print. | print. | |||
| In writing test scripts to test IPP Printers, the script must also be | In writing test scripts to test IPP Printers, the script must also be | |||
| written not to expect a response, if the printer has been paused, until | written not to expect a response, if the printer has been paused, until | |||
| skipping to change at page 56, line 4 ¶ | skipping to change at page 65, line 44 ¶ | |||
| completed successfully, then it should return the job-state as | completed successfully, then it should return the job-state as | |||
| 'completed'. Also the server can keep the job in its "job history" long | 'completed'. Also the server can keep the job in its "job history" long | |||
| after the job is no longer in the device. Then a user could query the | after the job is no longer in the device. Then a user could query the | |||
| server and see that the job was in the 'completed' state and completed | server and see that the job was in the 'completed' state and completed | |||
| as specified by the jobs "time-at-completed" time, which would be the | as specified by the jobs "time-at-completed" time, which would be the | |||
| same as the server submitted the job to the device. | same as the server submitted the job to the device. | |||
| An alternative is for the server to respond to the client before or | An alternative is for the server to respond to the client before or | |||
| while sending the job to the device, instead of waiting until the server | while sending the job to the device, instead of waiting until the server | |||
| has finished sending the job to the device. In this case, the server | has finished sending the job to the device. In this case, the server | |||
| Expires March 27, 2000 | ||||
| can return the job's state as 'pending' with the 'job-outgoing' value in | can return the job's state as 'pending' with the 'job-outgoing' value in | |||
| the job's "job-state-reasons" attribute. | the job's "job-state-reasons" attribute. | |||
| If the server doesn't know for sure whether the job completed | If the server doesn't know for sure whether the job completed | |||
| successfully (or at all), it could return the (out-of-band) 'unknown' | successfully (or at all), it could return the (out-of-band) 'unknown' | |||
| value. | value. | |||
| On the other hand, if the server is able to query the device and/or | On the other hand, if the server is able to query the device and/or | |||
| setup some sort of event notification that the device initiates when the | setup some sort of event notification that the device initiates when the | |||
| job makes state transitions, then the server can return the current job | job makes state transitions, then the server can return the current job | |||
| Expires November 30, 2000 | ||||
| state in the Print-Job response and in subsequent queries because the | state in the Print-Job response and in subsequent queries because the | |||
| server knows what the job state is in the device (or can query the | server knows what the job state is in the device (or can query the | |||
| device). | device). | |||
| All of these alternatives depend on implementation of the server and the | All of these alternatives depend on implementation of the server and the | |||
| device. | device. | |||
| 3.2.2Get-Printer-Attributes operation | 3.2.2 Get-Printer-Attributes operation | |||
| 1 If a Printer supports the "printer-make-and-model" attribute and | If a Printer supports the "printer-make-and-model" attribute and returns | |||
| returns the .INF file model name of the printer in that attribute, the | the .INF file model name of the printer in that attribute, the Microsoft | |||
| Microsoft client will automatically install the correct driver (if | client will automatically install the correct driver (if available). | |||
| available). | ||||
| 2 Clients which poll periodically for printer status or queued-job- | Clients which poll periodically for printer status or queued-job-count | |||
| count should use the "requested-attributes" operation attribute to | should use the "requested-attributes" operation attribute to limit the | |||
| limit the scope of the query in order to save Printer and network | scope of the query in order to save Printer and network resources. | |||
| resources. | ||||
| 3.2.3Get-Jobs operation | 3.2.3 Get-Jobs operation | |||
| 3.2.3.1 Get-Jobs, my-jobs='true', and 'requesting-user-name' (Issue | 3.2.3.1 Get-Jobs, my-jobs='true', and 'requesting-user-name' (Issue | |||
| 1.39)? | 1.39)? | |||
| In [ipp-mod] section 3.2.6.1 'Get-Jobs Request', if the attribute 'my- | In [IPP-MOD] section 3.2.6.1 'Get-Jobs Request', if the attribute 'my- | |||
| jobs' is present and set to TRUE, MUST the 'requesting-user-name' | jobs' is present and set to TRUE, MUST the 'requesting-user-name' | |||
| attribute be there too, and if it's not present what should the IPP | attribute be there too, and if it's not present what should the IPP | |||
| printer do? | printer do? | |||
| [ipp-mod] Section 8.3 describes the various cases of "requesting-user- | [IPP-MOD] Section 8.3 describes the various cases of "requesting-user- | |||
| name" being present or not for any operation. If the client does not | name" being present or not for any operation. If the client does not | |||
| supply a value for "requesting-user-name", the printer MUST assume that | supply a value for "requesting-user-name", the printer MUST assume that | |||
| the client is supplying some anonymous name, such as "anonymous". | the client is supplying some anonymous name, such as "anonymous". | |||
| 3.2.3.2 Why is there a "limit" attribute in the Get-Jobs operation? | 3.2.3.2 Why is there a "limit" attribute in the Get-Jobs operation? | |||
| When using the Get-Jobs operation a client implementer might choose to | When using the Get-Jobs operation a client implementer might choose to | |||
| limit the number of jobs that the client shows on the first screenful. | limit the number of jobs that the client shows on the first screenful. | |||
| For example, if its UI can only display 50 jobs, it can defend itself | For example, if its UI can only display 50 jobs, it can defend itself | |||
| against a printer that would otherwise return 500 jobs, perhaps taking a | against a printer that would otherwise return 500 jobs, perhaps taking a | |||
| long time on a slow dial-up line. The client can then go and ask for a | long time on a slow dial-up line. The client can then go and ask for a | |||
| Expires March 27, 2000 | ||||
| larger number of jobs in the background, while showing the user the | larger number of jobs in the background, while showing the user the | |||
| first 50 jobs. Since the job history is returned in reverse order, | first 50 jobs. Since the job history is returned in reverse order, | |||
| namely the most recently completed jobs are returned first, the user is | namely the most recently completed jobs are returned first, the user is | |||
| most likely interested in the first jobs that are returned. Limiting the | most likely interested in the first jobs that are returned. Limiting the | |||
| number of jobs may be especially useful for a client that is requesting | number of jobs may be especially useful for a client that is requesting | |||
| 'completed' jobs from a printer that keeps a long job history. Clients | 'completed' jobs from a printer that keeps a long job history. Clients | |||
| Expires November 30, 2000 | ||||
| that don't mind sometimes getting very large responses, can omit the | that don't mind sometimes getting very large responses, can omit the | |||
| "limit" attribute in their Get-Jobs requests. | "limit" attribute in their Get-Jobs requests. | |||
| 3.2.4Create-Job operation | 3.2.4 Create-Job operation | |||
| A Printer may respond to a Create-Job operation with "job-state" | A Printer may respond to a Create-Job operation with "job-state" | |||
| 'pending' or 'pending-held' and " job-state-reason" 'job-data- | 'pending' or 'pending-held' and " job-state-reason" 'job-data- | |||
| insufficient' to indicate that operation has been accepted by the | insufficient' to indicate that operation has been accepted by the | |||
| Printer, but the Printer is expecting additional document data before it | Printer, but the Printer is expecting additional document data before it | |||
| can move the job into the 'processing' state. Alternatively, it may | can move the job into the 'processing' state. Alternatively, it may | |||
| respond with "job-state" 'processing' and "job-state-reason" 'job- | respond with "job-state" 'processing' and "job-state-reason" 'job- | |||
| incoming' to indicate that the Create-Job operation has been accepted | incoming' to indicate that the Create-Job operation has been accepted | |||
| by the Printer, but the Printer is expecting additional Send-Document | by the Printer, but the Printer is expecting additional Send-Document | |||
| and/or Send-URI operations and/or is accessing/accepting document data. | and/or Send-URI operations and/or is accessing/accepting document data. | |||
| skipping to change at page 57, line 45 ¶ | skipping to change at page 67, line 39 ¶ | |||
| process the job. If the time-out occurs without the "last-document", | process the job. If the time-out occurs without the "last-document", | |||
| then the server takes one of the indicated actions in section 3.3.1 in | then the server takes one of the indicated actions in section 3.3.1 in | |||
| the [IPP-MOD] document. Other servers will start to process document | the [IPP-MOD] document. Other servers will start to process document | |||
| data as soon as they have some. These are the so-called "non-spooling" | data as soon as they have some. These are the so-called "non-spooling" | |||
| printers. Currently, there isn't a way for a client to determine whether | printers. Currently, there isn't a way for a client to determine whether | |||
| the Printer will spool all the data or will start to process (and print) | the Printer will spool all the data or will start to process (and print) | |||
| as soon as it has some data. | as soon as it has some data. | |||
| 3.3 Job Operations | 3.3 Job Operations | |||
| 3.3.1Validate-Job | 3.3.1 Validate-Job | |||
| The Validate-Job operation has been designed so that its implementation | The Validate-Job operation has been designed so that its implementation | |||
| may be a part of the Print-Job operation. Therefore, requiring | may be a part of the Print-Job operation. Therefore, requiring | |||
| Validate-Job is not a burden on implementers. Also it is useful for | Validate-Job is not a burden on implementers. Also it is useful for | |||
| client's to be able to count on its presence in all conformance | client's to be able to count on its presence in all conformance | |||
| implementations, so that the client can determine before sending a long | implementations, so that the client can determine before sending a long | |||
| document, whether the job will be accepted by the IPP Printer or not. | document, whether the job will be accepted by the IPP Printer or not. | |||
| 3.3.2 Restart-Job | ||||
| Expires November 30, 2000 | ||||
| The Restart-Job operation allows the reprocessing of a completed job. | ||||
| Some jobs store the document data on the printer. Jobs created using | ||||
| the Print-Job operation are an example. It is required that the printer | ||||
| retains the job data after the job has moved to a 'completed state' in | ||||
| order for the Restart-Job operation to succeed. | ||||
| Some jobs contain only a reference to the job data. A job created using | ||||
| the Print-URI is an example of such a job. When the Restart-Job | ||||
| operation is issued the job is reprocessed. The job data MUST be | ||||
| retrieved again to print the job. | ||||
| It is possible that a job fails while attempting to access the print | ||||
| data. When such a job is the target of a Restart-Job the Printer SHALL | ||||
| attempt to retrieve the job data again. | ||||
| 4 Object Attributes | 4 Object Attributes | |||
| 4.1 Attribute Syntax's | 4.1 Attribute Syntax's | |||
| Expires March 27, 2000 | 4.1.1 The 'none' value for empty sets (Issue 1.37) | |||
| 4.1.1The 'none' value for empty sets (Issue 1.37) | ||||
| [ipp-mod] states that the 'none' value should be used as the value of a | [IPP-MOD] states that the 'none' value should be used as the value of a | |||
| 1setOf when the set is empty. In most cases, sets that are potentially | 1setOf when the set is empty. In most cases, sets that are potentially | |||
| empty contain keywords so the keyword 'none' is used, but for the 3 | empty contain keywords so the keyword 'none' is used, but for the 3 | |||
| finishings attributes, the values are enums and thus the empty set is | finishings attributes, the values are enums and thus the empty set is | |||
| represented by the enum 3. Currently there are no other attributes with | represented by the enum 3. Currently there are no other attributes with | |||
| 1setOf values, which can be empty and can contain values that are not | 1setOf values, which can be empty and can contain values that are not | |||
| keywords. This exception requires special code and is a potential place | keywords. This exception requires special code and is a potential place | |||
| for bugs. It would have been better if we had chosen an out-of-band | for bugs. It would have been better if we had chosen an out-of-band | |||
| value, either "no-value" or some new value, such as 'none'. Since we | value, either "no-value" or some new value, such as 'none'. Since we | |||
| didn't, implementations have to deal with the different representations | didn't, implementations have to deal with the different representations | |||
| of 'none', depending on the attribute syntax. | of 'none', depending on the attribute syntax. | |||
| 4.1.2Multi-valued attributes (Issue 1.31) | 4.1.2 Multi-valued attributes (Issue 1.31) | |||
| What is the attribute syntax for a multi-valued attribute? Since some | What is the attribute syntax for a multi-valued attribute? Since some | |||
| attributes support values in more than one data type, such as "media", | attributes support values in more than one data type, such as "media", | |||
| "job-hold-until", and "job-sheets", IPP semantics associate the | "job-hold-until", and "job-sheets", IPP semantics associate the | |||
| attribute syntax with each value, not with the attribute as a whole. | attribute syntax with each value, not with the attribute as a whole. | |||
| The protocol associates the attribute syntax tag with each value. Don't | The protocol associates the attribute syntax tag with each value. Don't | |||
| be fooled, just because the attribute syntax tag comes before the | be fooled, just because the attribute syntax tag comes before the | |||
| attribute keyword. All attribute values after the first have a zero | attribute keyword. All attribute values after the first have a zero | |||
| length attribute keyword as the indication of a subsequent value of the | length attribute keyword as the indication of a subsequent value of the | |||
| same attribute. | same attribute. | |||
| 4.1.3Case Sensitivity in URIs (issue 1.6) | Expires November 30, 2000 | |||
| 4.1.3 Case Sensitivity in URIs (issue 1.6) | ||||
| IPP client and server implementations must be aware of the diverse | IPP client and server implementations must be aware of the diverse | |||
| uppercase/lowercase nature of URIs. RFC 2396 defines URL schemes and | uppercase/lowercase nature of URIs. RFC 2396 defines URL schemes and | |||
| Host names as case insensitive but reminds us that the rest of the URL | Host names as case insensitive but reminds us that the rest of the URL | |||
| may well demonstrate case sensitivity. When creating URL's for fields | may well demonstrate case sensitivity. When creating URL's for fields | |||
| where the choice is completely arbitrary, it is probably best to select | where the choice is completely arbitrary, it is probably best to select | |||
| lower case. However, this cannot be guaranteed and implementations MUST | lower case. However, this cannot be guaranteed and implementations MUST | |||
| NOT rely on any fields being case-sensitive or case-insensitive in the | NOT rely on any fields being case-sensitive or case-insensitive in the | |||
| URL beyond the URL scheme and host name fields. | URL beyond the URL scheme and host name fields. | |||
| skipping to change at page 59, line 5 ¶ | skipping to change at page 69, line 34 ¶ | |||
| avoid creating URLs for different printers that differ only in their | avoid creating URLs for different printers that differ only in their | |||
| case. For example, don't have Printer1 and printer1 as two different | case. For example, don't have Printer1 and printer1 as two different | |||
| IPP Printers. | IPP Printers. | |||
| Example of equivalent URI's | Example of equivalent URI's | |||
| http://abc.com:80/~smith/home.html | http://abc.com:80/~smith/home.html | |||
| http://ABC.com/%7Esmith/home.html | http://ABC.com/%7Esmith/home.html | |||
| Expires March 27, 2000 | ||||
| http:/ABC.com:/%7esmith/home.html | http:/ABC.com:/%7esmith/home.html | |||
| Example of equivalent URI's using the IPP scheme | Example of equivalent URI's using the IPP scheme | |||
| ipp://abc.com:631/~smith/home.html | ipp://abc.com:631/~smith/home.html | |||
| ipp://ABC.com/%7Esmith/home.html | ipp://ABC.com/%7Esmith/home.html | |||
| http:/ABC.com:631/%7esmith/home.html | http:/ABC.com:631/%7esmith/home.html | |||
| The HTTP/1.1 specification [RFC2616] contains more details on comparing | The HTTP/1.1 specification [RFC2616] contains more details on comparing | |||
| URLs. | URLs. | |||
| 4.1.4 Maximum length for xxxWithLanguage and xxxWithoutLanguage | ||||
| The 'textWithLanguage' and 'nameWithLanguage' are compound syntaxes that | ||||
| have two components. The first component is the 'language' component | ||||
| that can contain up to 63 octets. The second component is the 'text' or | ||||
| 'name' component. The maximum length of these are 1023 octets and 255 | ||||
| Expires November 30, 2000 | ||||
| octets respectively. The definition of attributes with either syntax | ||||
| may further restrict the length. (e.g. printer-name (name(127))) | ||||
| The length of the 'language' component has no effect on the allowable | ||||
| length of 'text' in 'textWithLanguage' or the length of 'name' in | ||||
| 'nameWithLanguage' | ||||
| 4.2 Job Template Attributes | 4.2 Job Template Attributes | |||
| 4.2.1multiple-document-handling(type2 keyword) | 4.2.1 multiple-document-handling(type2 keyword) | |||
| 4.2.1.1 Support of multiple document jobs | 4.2.1.1 Support of multiple document jobs | |||
| ISSUE: IPP/1.0 is silent on which of the four effects an implementation | IPP/1.0 is silent on which of the four effects an implementation would | |||
| would perform if it supports Create-Job, but does not support "multiple- | perform if it supports Create-Job, but does not support "multiple- | |||
| document-handling". | document-handling" or multiple documents per job. IPP/1.1 was changed | |||
| so that a Printer could support Create-Job without having to support | ||||
| A fix to IPP/1.0 would be to require implementing all four values of | multiple document jobs. The "multiple-document-jobs-supported" | |||
| "multiple-document-handling" if Create-Job is supported at all. Or at | (boolean) Printer description attribute was added to IPP/1.1 along with | |||
| least 'single-document-new-sheet' and 'separate-documents-uncollated- | the 'server-error-multiple-document-jobs-not-supported' status code for | |||
| copies'. In any case, an implementation that supports Create-Job SHOULD | a Printer to indicate whether or not it supports multiple document jobs, | |||
| also support "multiple-document-handling". Support for all four values | when it supports the Create-Job operation. Also IPP/1.1 was clarified | |||
| is RECOMMENDED, but at least the 'single-document-new-sheet' and | that the Printer MUST support the "multiple-document-handling" (type2 | |||
| 'separate-documents-uncollated-copies' values, along with the "multiple- | keyword) Job Template attribute with at least one value if the Printer | |||
| document-handling-default" indicating the default behavior and | supports multiple documents per job. | |||
| "multiple-document-handling-supported" values. If an implementation | ||||
| spools the data, it should also support the 'separate-documents- | ||||
| collated-copies' value as well. | ||||
| 4.3 Job Description Attributes | 4.3 Job Description Attributes | |||
| The time-at-creation, time-at-processing, and time-at-completed | The time-at-creation, time-at-processing, and time-at-completed | |||
| attributes may be returned in integer time ticks or absolute dateTime | attributes may be returned in integer time ticks or absolute dateTime | |||
| syntax. There are various ways for a Printer to get the time of day. | syntax. There are various ways for a Printer to get the time of day. | |||
| Some suggestions: | Some suggestions: | |||
| 1. A Printer can get time from an NTP timeserver if there's one | 1. A Printer can get time from an NTP timeserver if there's one | |||
| reachable on the network . See RFC 1305. Also DHCP option 32 in | reachable on the network . See RFC 1305. Also DHCP option 32 in | |||
| RFC 2132 returns the IP address of the NTP server. | RFC 2132 returns the IP address of the NTP server. | |||
| 2. Get the date and time at startup from a human operator | 2. Get the date and time at startup from a human operator | |||
| 3. Have an operator set the date and time using a web | 3. Have an operator set the date and time using a web | |||
| administrative interface | administrative interface | |||
| Expires March 27, 2000 | ||||
| 4. Get the date and time from incoming HTTP requests, though the | 4. Get the date and time from incoming HTTP requests, though the | |||
| problems of spoofing need to be considered. Perhaps comparing | problems of spoofing need to be considered. Perhaps comparing | |||
| several HTTP requests could reduce the chances of spoofing. | several HTTP requests could reduce the chances of spoofing. | |||
| Expires November 30, 2000 | ||||
| 5. Internal date time clock battery driven. | 5. Internal date time clock battery driven. | |||
| 6. Query "http://tycho.usno.navy.mil/cgi-bin/timer.pl" | 6. Query "http://tycho.usno.navy.mil/cgi-bin/timer.pl" | |||
| 4.4 Printer Description Attributes | 4.4 Printer Description Attributes | |||
| 4.4.1queued-job-count | 4.4.1 queued-job-count | |||
| 4.4.1.1 Why is "queued-job-count" RECOMMENDED (Issue 1.14)? | 4.4.1.1 Why is "queued-job-count" RECOMMENDED (Issue 1.14)? | |||
| The reason that "queued-job-count" is RECOMMENDED, is that some clients | The reason that "queued-job-count" is RECOMMENDED, is that some clients | |||
| look at that attribute alone when summarizing the status of a list of | look at that attribute alone when summarizing the status of a list of | |||
| printers, instead of doing a Get-Jobs to determine the number of jobs in | printers, instead of doing a Get-Jobs to determine the number of jobs in | |||
| the queue. Implementations that fail to support the "queued-job-count" | the queue. Implementations that fail to support the "queued-job-count" | |||
| will cause that client to display 0 jobs when there are actually queued | will cause that client to display 0 jobs when there are actually queued | |||
| jobs. | jobs. | |||
| We would have made it a REQUIRED Printer attribute, but some | We would have made it a REQUIRED Printer attribute, but some | |||
| implementations had already been completed before the issue was raised, | implementations had already been completed before the issue was raised, | |||
| so making it a SHOULD was a compromise. | so making it a SHOULD was a compromise. | |||
| 4.4.1.2 Is "queued-job-count" a good measure of how busy a printer is | 4.4.1.2 Is "queued-job-count" a good measure of how busy a printer is | |||
| (Issue 1.15)? | (Issue 1.15)? | |||
| The "queued-job-count" is not a good measure of how busy the printer is | The "queued-job-count" is not a good measure of how busy the printer is | |||
| when there are held jobs. A future registration could be to add a | when there are held jobs. A future registration could be to add a | |||
| "held-job-count" (or an "active-job-count") Printer Description | "held-job-count" (or an "active-job-count") Printer Description | |||
| attribute if experience shows that such an attribute (combination) is | attribute if experience shows that such an attribute (combination) is | |||
| needed to quickly indicate how busy a printer really is. | needed to quickly indicate how busy a printer really is. | |||
| 4.4.2printer-current-time (dateTime) | 4.4.2 printer-current-time (dateTime) | |||
| A Printer implementation MAY support this attribute by obtaining the | A Printer implementation MAY support this attribute by obtaining the | |||
| date and time by any number of implementation-dependent means at startup | date and time by any number of implementation-dependent means at startup | |||
| or subsequently. Examples include: | or subsequently. Examples include: | |||
| (1)an internal date time clock, | 1. an internal date time clock, | |||
| (2)from the operator at startup using the console, | 2. from the operator at startup using the console, | |||
| (3)from an operator using an administrative web page, | 3. from an operator using an administrative web page, | |||
| (4)from HTTP headers supplied in client requests, | 4. from HTTP headers supplied in client requests, | |||
| (5)use HTTP to query "http://tycho.usno.navy.mil/cgi-bin/timer.pl" | Expires November 30, 2000 | |||
| 5. use HTTP to query "http://tycho.usno.navy.mil/cgi-bin/timer.pl" | ||||
| Expires March 27, 2000 | 6. from the network, using NTP [RFC1305] or DHCP option 32 [RFC2132] | |||
| (6)from the network, using NTP [RFC1305] or DHCP option 32 [RFC2132] | that returns the IP address of the NTP server. | |||
| that returns the IP address of the NTP server. | ||||
| If an implementation supports this attribute by obtaining the current | If an implementation supports this attribute by obtaining the current | |||
| time from the network (at startup or later), but the time is not | time from the network (at startup or later), but the time is not | |||
| available, then the implementation MUST return the value of this | available, then the implementation MUST return the value of this | |||
| attribute using the out-of-band 'no-value' meaning not configured. See | attribute using the out-of-band 'no-value' meaning not configured. See | |||
| the beginning of section 4.1. | the beginning of section 4.1. | |||
| Since the new "date-and-time-at-xxx" Job Description attributes refer to | Since the new "date-and-time-at-xxx" Job Description attributes refer to | |||
| the "printer-current-time", they will be covered also. | the "printer-current-time", they will be covered also. | |||
| 4.4.3'Printer-uri | 4.4.3 'Printer-uri | |||
| Must the operational attribute for printer-uri match one of the values | Must the operational attribute for printer-uri match one of the values | |||
| in printer-uri-supported? | in printer-uri-supported? | |||
| A forgiving printer implementation would not reject the operation. But | A forgiving printer implementation would not reject the operation. But | |||
| the implementation has its rights to reject a printer or job operation | the implementation has its rights to reject a printer or job operation | |||
| if the operational attribute printer-uri is not a value of the printer- | if the operational attribute printer-uri is not a value of the printer- | |||
| uri-supported. The printer may not be improperly configured. The request | uri-supported. The printer may not be improperly configured. The request | |||
| obviously reached the printer. The printer could treat the printer-uri | obviously reached the printer. The printer could treat the printer-uri | |||
| as the logical equivalent of a value in the printer-uri-supported. It | as the logical equivalent of a value in the printer-uri-supported. It | |||
| would be implementation dependent for which value, and associated | would be implementation dependent for which value, and associated | |||
| security policy, would apply. This does also apply to a job object | security policy, would apply. This does also apply to a job object | |||
| specified with a printer-uri and job-id, or with a job-uri. See section | specified with a printer-uri and job-id, or with a job-uri. See section | |||
| 4.1.3 for how to compare URI's. | 4.1.3 for how to compare URI's. | |||
| 5 DNS Considerations | 4.5 Empty Jobs | |||
| 5.1 IPP Printer with a DNS name | The IPP object model does not prohibit a job that contains no documents. | |||
| Such a job may be created in a number of ways including a 'create-job' | ||||
| followed by an 'add-document' that contains no data and has the 'last- | ||||
| document' flag set. | ||||
| An empty job is processed just as any other job. The operation that | ||||
| "closes" an empty job is not rejected because the job is empty. If no | ||||
| other conditions exist, other than the job is empty, the response to the | ||||
| operation will indicate success. After the job is scheduled and | ||||
| processed, the job state SHALL be 'completed' | ||||
| There will be some variation in the value(s) of the 'job-state-reasons' | ||||
| attribute. It is required that if no conditions, other than the job | ||||
| being empty, exist the 'job-state-reasons' SHALL include the 'completed- | ||||
| Expires November 30, 2000 | ||||
| successfully'. If other conditions existed, the 'completed-with- | ||||
| warnings' or 'completed-with-errors' values may be used." | ||||
| 5 Directory Considerations | ||||
| 5.1 General Directory Schema Considerations | ||||
| The [ipp-mod] document lists RECOMMENDED and OPTIONAL Printer object | ||||
| attributes for directory schemas. See [ipp-mod] APPENDIX E: Generic | ||||
| Directory Schema. | ||||
| The SLP printer template is defined in the "Definition of the Printer | ||||
| Abstract Service Type v2.0" document [svrloc-printer]. The LDAP printer | ||||
| template is defined in the "Internet Printing Protocol (IPP): LDAP | ||||
| Schema for Printer Services" document [ldap-printer]. Both documents | ||||
| systematically add "printer-" to any attribute that doesn't already | ||||
| start with "printer-" in order to keep the printer directory attributes | ||||
| distinct from other directory attributes. Also, instead of using | ||||
| "printer-uri-supported", "uri-authentication-supported", and "uri- | ||||
| security-supported", they use a "printer-xri-supported" attribute with | ||||
| special syntax to contain all of the same information in a single | ||||
| attribute. | ||||
| 5.2 IPP Printer with a DNS name | ||||
| If the IPP printer has a DNS name should there be at least two values | If the IPP printer has a DNS name should there be at least two values | |||
| for the printer-uri-supported attribute. One URL with the fully | for the printer-uri-supported attribute. One URL with the fully | |||
| qualified DNS name the other with the IP address in the URL? | qualified DNS name the other with the IP address in the URL? | |||
| The printer may contain one or the other or both. It's up to the | The printer may contain one or the other or both. It's up to the | |||
| administrator to configure this attribute. | administrator to configure this attribute. | |||
| 6 Security Considerations | 6 Security Considerations | |||
| This section corresponds to the IPP-MOD Section 8 "Security | This section corresponds to the IPP-MOD Section 8 "Security | |||
| Considerations. | Considerations. | |||
| 6.1 Querying jobs with IPP that were submitted using other job | 6.1 Querying jobs with IPP that were submitted using other job | |||
| submission protocols (Issue 1.32) | submission protocols (Issue 1.32) | |||
| The following clarification was added to [ipp-mod] section 8.5: | The following clarification was added to [IPP-MOD] section 8.5: | |||
| 8.5 Queries on jobs submitted using non-IPP protocols | 8.5 Queries on jobs submitted using non-IPP protocols | |||
| Expires March 27, 2000 | Expires November 30, 2000 | |||
| If the device that an IPP Printer is representing is able to accept jobs | If the device that an IPP Printer is representing is able to accept jobs | |||
| using other job submission protocols in addition to IPP, it is RECOMMEND | using other job submission protocols in addition to IPP, it is RECOMMEND | |||
| that such an implementation at least allow such "foreign" jobs to be | that such an implementation at least allow such "foreign" jobs to be | |||
| queried using Get-Jobs returning "job-id" and "job-uri" as 'unknown'. | queried using Get-Jobs returning "job-id" and "job-uri" as 'unknown'. | |||
| Such an implementation NEED NOT support all of the same IPP job | Such an implementation NEED NOT support all of the same IPP job | |||
| attributes as for IPP jobs. The IPP object returns the 'unknown' out- | attributes as for IPP jobs. The IPP object returns the 'unknown' out- | |||
| of-band value for any requested attribute of a foreign job that is | of-band value for any requested attribute of a foreign job that is | |||
| supported for IPP jobs, but not for foreign jobs. | supported for IPP jobs, but not for foreign jobs. | |||
| skipping to change at page 62, line 54 ¶ | skipping to change at page 75, line 5 ¶ | |||
| while the client is still sending the data, rather than waiting until | while the client is still sending the data, rather than waiting until | |||
| all of the data is received. Therefore, we also recommend that a client | all of the data is received. Therefore, we also recommend that a client | |||
| listen for an error response that an IPP server MAY send before it | listen for an error response that an IPP server MAY send before it | |||
| receives all the data. In this case a client, if chunking the data, can | receives all the data. In this case a client, if chunking the data, can | |||
| send a premature zero-length chunk to end the request before sending all | send a premature zero-length chunk to end the request before sending all | |||
| the data (and so the client can keep the connection open for other | the data (and so the client can keep the connection open for other | |||
| requests, rather than closing it). If the request is blocked for some | requests, rather than closing it). If the request is blocked for some | |||
| reason, a client MAY determine the reason by opening another connection | reason, a client MAY determine the reason by opening another connection | |||
| to query the server using Get-Printer-Attributes. | to query the server using Get-Printer-Attributes. | |||
| Expires November 30, 2000 | ||||
| IPP, by design, uses TCP's built-in flow control mechanisms [RFC 793] to | IPP, by design, uses TCP's built-in flow control mechanisms [RFC 793] to | |||
| throttle clients when Printers are busy. Therefore, it is perfectly | throttle clients when Printers are busy. Therefore, it is perfectly | |||
| normal for an IPP client transmitting a Job to be blocked for a really | normal for an IPP client transmitting a Job to be blocked for a really | |||
| long time. Accordingly, socket timeouts must be avoided. Some socket | long time. Accordingly, socket timeouts must be avoided. Some socket | |||
| implementations have a timeout option, which specifies how long a write | implementations have a timeout option, which specifies how long a write | |||
| operation on a socket can be blocked before it times out and the | operation on a socket can be blocked before it times out and the | |||
| Expires March 27, 2000 | ||||
| blocking ends. A client should set this option for infinite timeout | blocking ends. A client should set this option for infinite timeout | |||
| when transmitting Job submissions. | when transmitting Job submissions. | |||
| Some IPP client applications might be able to perform other useful work | Some IPP client applications might be able to perform other useful work | |||
| while a Job transmission is blocked. For example, the client may have | while a Job transmission is blocked. For example, the client may have | |||
| other jobs that it could transmit to other Printers simultaneously. A | other jobs that it could transmit to other Printers simultaneously. A | |||
| client may have a GUI, which must remain responsive to the user while | client may have a GUI, which must remain responsive to the user while | |||
| the Job transmission is blocked. These clients should be designed to | the Job transmission is blocked. These clients should be designed to | |||
| spawn a thread to handle the Job transmission at its own pace, leaving | spawn a thread to handle the Job transmission at its own pace, leaving | |||
| the main application free to do other work. Alternatively, single- | the main application free to do other work. Alternatively, single- | |||
| skipping to change at page 63, line 28 ¶ | skipping to change at page 75, line 34 ¶ | |||
| Some Printer conditions, such as jam or lack of paper, could cause a | Some Printer conditions, such as jam or lack of paper, could cause a | |||
| client to be blocked indefinitely. Clients may open additional | client to be blocked indefinitely. Clients may open additional | |||
| connections to the Printer to Get-Printer-Attributes, determine the | connections to the Printer to Get-Printer-Attributes, determine the | |||
| state of the device, alert a user if the printer is stopped, and let a | state of the device, alert a user if the printer is stopped, and let a | |||
| user decide whether to abort the job transmission or not. | user decide whether to abort the job transmission or not. | |||
| In the following sections, there are tables of all HTTP headers, which | In the following sections, there are tables of all HTTP headers, which | |||
| describe their use in an IPP client or server. The following is an | describe their use in an IPP client or server. The following is an | |||
| explanation of each column in these tables. | explanation of each column in these tables. | |||
| . the "header" column contains the name of a header | - the "header" column contains the name of a header | |||
| . the "request/client" column indicates whether a client sends the | - the "request/client" column indicates whether a client sends the | |||
| header. | header. | |||
| . the "request/ server" column indicates whether a server supports | - the "request/ server" column indicates whether a server supports | |||
| the header when received. | the header when received. | |||
| . the "response/ server" column indicates whether a server sends the | - the "response/ server" column indicates whether a server sends | |||
| header. | the header. | |||
| . the "response /client" column indicates whether a client supports | - the "response /client" column indicates whether a client | |||
| the header when received. | supports the header when received. | |||
| . the "values and conditions" column specifies the allowed header | - the "values and conditions" column specifies the allowed header | |||
| values and the conditions for the header to be present in a | values and the conditions for the header to be present in a | |||
| request/response. | request/response. | |||
| The table for "request headers" does not have columns for responses, and | The table for "request headers" does not have columns for responses, and | |||
| the table for "response headers" does not have columns for requests. | the table for "response headers" does not have columns for requests. | |||
| The following is an explanation of the values in the "request/client" | The following is an explanation of the values in the "request/client" | |||
| and "response/ server" columns. | and "response/ server" columns. | |||
| . must: the client or server MUST send the header, | - must: the client or server MUST send the header, | |||
| . must-if: the client or server MUST send the header when the | ||||
| condition described in the "values and conditions" column is met, | Expires November 30, 2000 | |||
| . may: the client or server MAY send the header | - must-if: the client or server MUST send the header when the | |||
| . not: the client or server SHOULD NOT send the header. It is not | condition described in the "values and conditions" column is met, | |||
| relevant to an IPP implementation. | - may: the client or server MAY send the header | |||
| - not: the client or server SHOULD NOT send the header. It is not | ||||
| relevant to an IPP implementation. | ||||
| The following is an explanation of the values in the "response/client" | The following is an explanation of the values in the "response/client" | |||
| and "request/ server" columns. | and "request/ server" columns. | |||
| . must: the client or server MUST support the header, | - must: the client or server MUST support the header, | |||
| . may: the client or server MAY support the header | - may: the client or server MAY support the header | |||
| . not: the client or server SHOULD NOT support the header. It is not | - not: the client or server SHOULD NOT support the header. It is | |||
| relevant to an IPP implementation. | not relevant to an IPP implementation. | |||
| Expires March 27, 2000 | ||||
| 7.1 General Headers | 7.1 General Headers | |||
| The following is a table for the general headers. | The following is a table for the general headers. | |||
| General- Request Response V alues and Conditions | General- Request Response Values and Conditions | |||
| Header | Header | |||
| Client Server Server Client | Client Server Server Client | |||
| Cache- must n ot must not "no-cache" only | Cache- must not must not "no-cache" only | |||
| Control | Control | |||
| Connection must-if m ust must- m ust "close" only. Both | Connection must-if must must- must "close" only. Both | |||
| if client and server | if client and server | |||
| SHOULD keep a | SHOULD keep a | |||
| connection for the | connection for the | |||
| duration of a sequence | duration of a sequence | |||
| of operations. The | of operations. The | |||
| client and server MUST | client and server MUST | |||
| include this header | include this header | |||
| for the last operation | for the last operation | |||
| in such a sequence. | in such a sequence. | |||
| Date may m ay must may per RFC 1123 [RFC1123] | Date may may must may per RFC 1123 [RFC1123] | |||
| from RFC 2616 | from RFC 2616 | |||
| [RFC2616] | [RFC2616] | |||
| Pragma must n ot must not "no-cache" only | Pragma must not must not "no-cache" only | |||
| Transfer- must-if m ust must- m ust "chunked" only . | Transfer- must-if must must- must "chunked" only . | |||
| Encoding if Header MUST be present | Encoding if Header MUST be present | |||
| if Content-Length is | if Content-Length is | |||
| absent. | absent. | |||
| Upgrade not not not n ot | Upgrade not not not not | |||
| Via not n ot not not | Expires November 30, 2000 | |||
| General- Request Response V alues and Conditions | ||||
| Header | ||||
| Client Server Server Client | ||||
| Via not not not not | ||||
| 7.2 Request Headers | 7.2 Request Headers | |||
| The following is a table for the request headers. | The following is a table for the request headers. | |||
| Request-Header Client Server Request Values and Conditions | Request-Header Client Server Request Values and Conditions | |||
| Accept may must "application/ipp" only. This | Accept may must "application/ipp" only. This | |||
| value is the default if the | value is the default if the | |||
| client omits it | client omits it | |||
| Accept-Charset not n ot Charset information is within | Accept-Charset not not Charset information is within | |||
| the application/ipp entity | the application/ipp entity | |||
| Accept-Encoding may m ust empty and per RFC 2616 [RFC2616] | Accept-Encoding may must empty and per RFC 2616 [RFC2616] | |||
| and IANA registry for content- | and IANA registry for content- | |||
| Expires March 27, 2000 | ||||
| Request-Header Client Server Request Values and Conditions | ||||
| codings | codings | |||
| Accept-Language not not language information is within | Accept-Language not not language information is within | |||
| the application/ipp entity | the application/ipp entity | |||
| Authorization must-if must per RFC 2616. A client MUST send | Authorization must-if must per RFC 2616. A client MUST send | |||
| this header when it receives a | this header when it receives a | |||
| 401 "Unauthorized" response and | 401 "Unauthorized" response and | |||
| does not receive a "Proxy- | does not receive a "Proxy- | |||
| Authenticate" header. | Authenticate" header. | |||
| >From not not per RFC 2616. Because RFC | >From not not per RFC 2616. Because RFC | |||
| recommends sending this header | recommends sending this header | |||
| only with the user's approval, it | only with the user's approval, it | |||
| is not very useful | is not very useful | |||
| Host must m ust per RFC 2616 | Host must must per RFC 2616 | |||
| If-Match not n ot | If-Match not not | |||
| If-Modified- not not | If-Modified- not not | |||
| Since | Since | |||
| If-None-Match not not | If-None-Match not not | |||
| If-Range not n ot | Expires November 30, 2000 | |||
| Request-Header Client Server Request Values and Conditions | ||||
| If-Unmodified- not n ot | If-Range not not | |||
| If-Unmodified- not not | ||||
| Since | Since | |||
| Max-Forwards not not | Max-Forwards not not | |||
| Proxy- must-if n ot per RFC 2616. A client MUST send | Proxy- must-if not per RFC 2616. A client MUST send | |||
| Authorization this header when it receives a | Authorization this header when it receives a | |||
| 401 "Unauthorized" response and a | 401 "Unauthorized" response and a | |||
| "Proxy-Authenticate" header. | "Proxy-Authenticate" header. | |||
| Range not n ot | Range not not | |||
| Referrer not n ot | Referrer not not | |||
| User-Agent not not | User-Agent not not | |||
| 7.3 Response Headers | 7.3 Response Headers | |||
| The following is a table for the request headers. | The following is a table for the request headers. | |||
| Response- Server Client R esponse Values and Conditions | Response- Server Client Response Values and Conditions | |||
| Header | Header | |||
| Accept-Ranges not not | Accept-Ranges not not | |||
| Expires March 27, 2000 | ||||
| Response- Server Client R esponse Values and Conditions | ||||
| Header | ||||
| Age not not | Age not not | |||
| Location must-if may p er RFC 2616. When URI needs | Location must-if may per RFC 2616. When URI needs | |||
| redirection. | redirection. | |||
| Proxy- not must p er RFC 2616 | Proxy- not must per RFC 2616 | |||
| Authenticate | Authenticate | |||
| Public may may p er RFC 2616 | Public may may per RFC 2616 | |||
| Retry-After may may p er RFC 2616 | Retry-After may may per RFC 2616 | |||
| Server not not | Server not not | |||
| Vary not not | Vary not not | |||
| Warning may may p er RFC 2616 | Warning may may per RFC 2616 | |||
| WWW- must-if must p er RFC 2616. When a server needs to | Expires November 30, 2000 | |||
| Authenticate authenticate a client. | Response- Server Client Response Values and Conditions | |||
| Header | ||||
| WWW- must-if must per RFC 2616. When a server needs to | ||||
| Authenticate authenticate a client. | ||||
| 7.4 Entity Headers | 7.4 Entity Headers | |||
| The following is a table for the entity headers. | The following is a table for the entity headers. | |||
| Entity-Header Request Response Values and Conditions | Entity-Header Request Response Values and Conditions | |||
| Client Server Server Client | Client Server Server Client | |||
| Allow not not n ot not | Allow not not not not | |||
| Content-Base not not n ot n ot | Content-Base not not not not | |||
| Content- may must m ust m ust per RFC 2616 and IANA | Content- may must must must per RFC 2616 and IANA | |||
| Encoding registry for content | Encoding registry for content | |||
| codings. | codings. | |||
| Content- not not n ot not Application/ipp | Content- not not not not Application/ipp | |||
| Language handles language | Language handles language | |||
| Content- must-if must m ust-if m ust the length of the | Content- must-if must must-if must the length of the | |||
| Length message-body per RFC | Length message-body per RFC | |||
| 2616. Header MUST be | 2616. Header MUST be | |||
| present if Transfer- | present if Transfer- | |||
| Encoding is absent.. | Encoding is absent.. | |||
| Content- not not n ot n ot | Content- not not not not | |||
| Location | Location | |||
| Content-MD5 may may may m ay per RFC 2616 | Content-MD5 may may may may per RFC 2616 | |||
| Expires March 27, 2000 | ||||
| Entity-Header Request Response Values and Conditions | ||||
| Client Server Server Client | ||||
| Content-Range not not n ot n ot | Content-Range not not not not | |||
| Content-Type must must m ust m ust "application/ipp" | Content-Type must must must must "application/ipp" | |||
| only | only | |||
| ETag not not n ot not | ETag not not not not | |||
| Expires not not n ot n ot | Expires not not not not | |||
| Last-Modified not not n ot n ot | Last-Modified not not not not | |||
| Expires November 30, 2000 | ||||
| 7.5 Optional support for HTTP/1.0 | 7.5 Optional support for HTTP/1.0 | |||
| IPP implementations consist of an HTTP layer and an IPP layer. In the | IPP implementations consist of an HTTP layer and an IPP layer. In the | |||
| following discussion, the term "client" refers to the HTTP client layer | following discussion, the term "client" refers to the HTTP client layer | |||
| and the term "server" refers to the HTTP server layer. The Encoding and | and the term "server" refers to the HTTP server layer. The Encoding and | |||
| Transport document [IPP-PRO] requires that HTTP 1.1 MUST be supported by | Transport document [IPP-PRO] requires that HTTP 1.1 MUST be supported by | |||
| all clients and all servers. However, a client and/or a server | all clients and all servers. However, a client and/or a server | |||
| implementation may choose to also support HTTP 1.0. | implementation may choose to also support HTTP 1.0. | |||
| @ This option means that a server may choose to communicate with a | - This option means that a server may choose to communicate with a | |||
| (non-conforming) client that only supports HTTP 1.0. In such cases the | (non-conforming) client that only supports HTTP 1.0. In such cases the | |||
| server should not use any HTTP 1.1 specific parameters or features and | server should not use any HTTP 1.1 specific parameters or features and | |||
| should respond using HTTP version number 1.0. | should respond using HTTP version number 1.0. | |||
| @ This option also means that a client may choose to communicate with a | - This option also means that a client may choose to communicate with a | |||
| (non-conforming) server that only supports HTTP 1.0. In such cases, if | (non-conforming) server that only supports HTTP 1.0. In such cases, if | |||
| the server responds with an HTTP 'unsupported version number' to an HTTP | the server responds with an HTTP 'unsupported version number' to an HTTP | |||
| 1.1 request, the client should retry using HTTP version number 1.0. | 1.1 request, the client should retry using HTTP version number 1.0. | |||
| 7.6 HTTP/1.1 Chunking | 7.6 HTTP/1.1 Chunking | |||
| 7.6.1Disabling IPP Server Response Chunking | 7.6.1 Disabling IPP Server Response Chunking | |||
| Clients MUST anticipate that the HTTP/1.1 server may chunk responses and | Clients MUST anticipate that the HTTP/1.1 server may chunk responses and | |||
| MUST accept them in responses. However, a (non-conforming) HTTP client | MUST accept them in responses. However, a (non-conforming) HTTP client | |||
| that is unable to accept chunked responses may attempt to request an | that is unable to accept chunked responses may attempt to request an | |||
| HTTP 1.1 server not to use chunking in its response to an operation by | HTTP 1.1 server not to use chunking in its response to an operation by | |||
| using the following HTTP header: | using the following HTTP header: | |||
| TE: identity | TE: identity | |||
| This mechanism should not be used by a server to disable a client from | This mechanism should not be used by a server to disable a client from | |||
| chunking a request, since chunking of document data is an important | chunking a request, since chunking of document data is an important | |||
| feature for clients to send long documents. | feature for clients to send long documents. | |||
| 7.6.2Warning About the Support of Chunked Requests | 7.6.2 Warning About the Support of Chunked Requests | |||
| Expires March 27, 2000 | ||||
| This section describes some problems with the use of chunked requests | This section describes some problems with the use of chunked requests | |||
| and HTTP/1.1 servers. | and HTTP/1.1 servers. | |||
| The HTTP/1.1 standard [RFC2616] requires that conforming servers support | The HTTP/1.1 standard [RFC2616] requires that conforming servers support | |||
| chunked requests for any method. However, in spite of this requirement, | chunked requests for any method. However, in spite of this requirement, | |||
| some HTTP/1.1 implementations support chunked responses in the GET | some HTTP/1.1 implementations support chunked responses in the GET | |||
| method, but do not support chunked POST method requests. Some HTTP/1.1 | method, but do not support chunked POST method requests. Some HTTP/1.1 | |||
| implementations that support CGI scripts [CGI] and/or servlets [Servlet] | implementations that support CGI scripts [CGI] and/or servlets [Servlet] | |||
| Expires November 30, 2000 | ||||
| require that the client supply a Content-Length. These implementations | require that the client supply a Content-Length. These implementations | |||
| might reject a chunked POST method and return a 411 status code (Length | might reject a chunked POST method and return a 411 status code (Length | |||
| Required), might attempt to buffer the request and run out of room | Required), might attempt to buffer the request and run out of room | |||
| returning a 413 status code (Request Entity Too Large), or might | returning a 413 status code (Request Entity Too Large), or might | |||
| successfully accept the chunked request. | successfully accept the chunked request. | |||
| Because of this lack of conformance of HTTP servers to the HTTP/1.1 | Because of this lack of conformance of HTTP servers to the HTTP/1.1 | |||
| standard, the IPP standard [IPP-PRO] REQUIRES that a conforming IPP | standard, the IPP standard [IPP-PRO] REQUIRES that a conforming IPP | |||
| Printer object implementation support chunked requests and that | Printer object implementation support chunked requests and that | |||
| conforming clients accept chunked responses. Therefore, IPP object | conforming clients accept chunked responses. Therefore, IPP object | |||
| skipping to change at page 68, line 37 ¶ | skipping to change at page 81, line 29 ¶ | |||
| 8 References | 8 References | |||
| [CGI] | [CGI] | |||
| CGI/1.1 (http://www.ietf.org/internet-drafts/draft-coar-cgi-v11- | CGI/1.1 (http://www.ietf.org/internet-drafts/draft-coar-cgi-v11- | |||
| 00.txt). | 00.txt). | |||
| [IPP-MOD] | [IPP-MOD] | |||
| R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, | R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, | |||
| "Internet Printing Protocol/1.0: Model and Semantics", draft-ietf- | "Internet Printing Protocol/1.0: Model and Semantics", draft-ietf- | |||
| ipp-model-v11-04.txt, June 1999. | ipp-model-v11-06.txt, March 1, 2000. | |||
| [IPP-PRO] | [IPP-PRO] | |||
| Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing | Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing | |||
| Protocol/1.0: Encoding and Transport", draft-ietf-ipp-protocol-v11- | Protocol/1.0: Encoding and Transport", draft-ietf-ipp-protocol-v11- | |||
| 03.txt, June 1999. | 05.txt, March 1, 2000. | |||
| [RFC 793] | [ldap-printer] | |||
| Fleming, P., Jones, K., Lewis, H., McDonald, I., "Internet Printing | ||||
| Protocol (IPP): LDAP Schema for Printer Services", <draft-ietf-ipp- | ||||
| ldap-printer-schema-01.txt>, work in progress, April 27, 2000. | ||||
| [RFC793] | ||||
| J. Postel, "Transmission Control Protocol", RFC 793. | J. Postel, "Transmission Control Protocol", RFC 793. | |||
| [RFC1123] | [RFC1123] | |||
| Braden, S., "Requirements for Internet Hosts - Application and | Braden, S., "Requirements for Internet Hosts - Application and | |||
| Support", RFC 1123, October, 1989. | Support", RFC 1123, October, 1989. | |||
| [RFC2026] | [RFC2026] | |||
| S. Bradner, "The Internet Standards Process -- Revision 3", RFC | S. Bradner, "The Internet Standards Process -- Revision 3", RFC | |||
| 2026, October 1996. | 2026, October 1996. | |||
| [rfc2119] | [RFC2119] | |||
| Expires November 30, 2000 | ||||
| S. Bradner, "Key words for use in RFCs to Indicate Requirement | S. Bradner, "Key words for use in RFCs to Indicate Requirement | |||
| Levels", RFC 2119 , March 1997. | Levels", RFC 2119 , March 1997. | |||
| [RFC2396] | [RFC2396] | |||
| Expires March 27, 2000 | ||||
| Berners-Lee, T., Fielding, R., Masinter, L., "Uniform Resource | Berners-Lee, T., Fielding, R., Masinter, L., "Uniform Resource | |||
| Identifiers (URI): Generic Syntax", RFC 2396, August 1998. | Identifiers (URI): Generic Syntax", RFC 2396, August 1998. | |||
| [RFC2565] | [RFC2565] | |||
| R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, | R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, | |||
| "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, | "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, | |||
| April 1999. | April 1999. | |||
| [RFC2566] | [RFC2566] | |||
| Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing | Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing | |||
| skipping to change at page 69, line 39 ¶ | skipping to change at page 82, line 43 ¶ | |||
| [RFC2616] | [RFC2616] | |||
| R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. | R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. | |||
| Leach, T. Berners-Lee, "Hypertext Transfer Protocol - HTTP/1.1", | Leach, T. Berners-Lee, "Hypertext Transfer Protocol - HTTP/1.1", | |||
| RFC 2616, June 1999. | RFC 2616, June 1999. | |||
| [Servlet] | [Servlet] | |||
| Servlet Specification Version 2.1 | Servlet Specification Version 2.1 | |||
| (http://java.sun.com/products/servlet/2.1/index.html). | (http://java.sun.com/products/servlet/2.1/index.html). | |||
| [svrloc-printer] | ||||
| St. Pierre, P., Isaacson, S., McDonald, I., "Definition of the | ||||
| Printer Abstract Service Type v2.0", <draft-ietf-svrloc-printer- | ||||
| scheme-06.txt>, work in progress, March 8, 2000. | ||||
| [SSL] | [SSL] | |||
| Netscape, The SSL Protocol, Version 3, (Text version 3.02), | Netscape, The SSL Protocol, Version 3, (Text version 3.02), | |||
| November 1996. | November 1996. | |||
| 8.1 Authors' Address | 9 Authors' Address | |||
| Expires November 30, 2000 | ||||
| Thomas N. Hastings | Thomas N. Hastings | |||
| Xerox Corporation | Xerox Corporation | |||
| 701 Aviation Blvd. | 701 Aviation Blvd. | |||
| El Segundo, CA 90245 | El Segundo, CA 90245 | |||
| hastings@cp10.es.xerox.com | hastings@cp10.es.xerox.com | |||
| Carl-Uno Manros | Carl-Uno Manros | |||
| Xerox Corporation | Xerox Corporation | |||
| 701 Aviation Blvd. | 701 Aviation Blvd. | |||
| El Segundo, CA 90245 | El Segundo, CA 90245 | |||
| manros@cp10.es.xerox.com | manros@cp10.es.xerox.com | |||
| Carl Kugler | Carl Kugler | |||
| Mail Stop 003G | Mail Stop 003G | |||
| Expires March 27, 2000 | ||||
| IBM Printing Systems Co | IBM Printing Systems Co | |||
| 6300 Diagonal Hwy | 6300 Diagonal Hwy | |||
| Boulder CO80301 | Boulder CO 80301 | |||
| Kugler@us.ibm.com | Kugler@us.ibm.com | |||
| Henrik Holst | Henrik Holst | |||
| i-data Printing Systems | i-data Printing Systems | |||
| Vadstrupvej 35-43 | Vadstrupvej 35-43 | |||
| 2880 Bagsvaerd, Denmark | 2880 Bagsvaerd, Denmark | |||
| hh@I-data.com | hh@I-data.com | |||
| 9 Notices | Peter Zehler | |||
| Xerox Corporation | ||||
| 800 Philips Road | ||||
| Webster, NY 14580 | ||||
| Phone: 716 265-8755 | ||||
| peter.zehler@usa.xerox.com | ||||
| 10 Notices | ||||
| The IETF takes no position regarding the validity or scope of any | The IETF takes no position regarding the validity or scope of any | |||
| intellectual property or other rights that might be claimed to pertain | intellectual property or other rights that might be claimed to pertain | |||
| to the implementation or use of the technology described in this | to the implementation or use of the technology described in this | |||
| document or the extent to which any license under such rights might or | document or the extent to which any license under such rights might or | |||
| might not be available; neither does it represent that it has made any | might not be available; neither does it represent that it has made any | |||
| effort to identify any such rights. Information on the IETF's | effort to identify any such rights. Information on the IETF's | |||
| procedures with respect to rights in standards-track and standards- | procedures with respect to rights in standards-track and standards- | |||
| related documentation can be found in BCP-11[BCP-11]. Copies of claims | related documentation can be found in BCP-11[BCP-11]. Copies of claims | |||
| of rights made available for publication and any assurances of licenses | of rights made available for publication and any assurances of licenses | |||
| to be made available, or the result of an attempt made to obtain a | to be made available, or the result of an attempt made to obtain a | |||
| general license or permission for the use of such proprietary rights by | general license or permission for the use of such proprietary rights by | |||
| implementers or users of this specification can be obtained from the | implementers or users of this specification can be obtained from the | |||
| IETF Secretariat. | IETF Secretariat. | |||
| Expires November 30, 2000 | ||||
| The IETF invites any interested party to bring to its attention any | The IETF invites any interested party to bring to its attention any | |||
| copyrights, patents or patent applications, or other proprietary rights, | copyrights, patents or patent applications, or other proprietary rights, | |||
| which may cover technology that may be required to practice this | which may cover technology that may be required to practice this | |||
| standard. Please address the information to the IETF Executive | standard. Please address the information to the IETF Executive | |||
| Director. | Director. | |||
| Copyright (C) The Internet Society (1999). All Rights Reserved | Copyright (C) The Internet Society (1999). All Rights Reserved | |||
| This document and translations of it may be copied and furnished to | This document and translations of it may be copied and furnished to | |||
| others, and derivative works that comment on or otherwise explain it or | others, and derivative works that comment on or otherwise explain it or | |||
| skipping to change at page 71, line 4 ¶ | skipping to change at page 84, line 33 ¶ | |||
| which case the procedures for copyrights defined in the Internet | which case the procedures for copyrights defined in the Internet | |||
| Standards process must be followed, or as required to translate it into | Standards process must be followed, or as required to translate it into | |||
| languages other than English. | languages other than English. | |||
| The limited permissions granted above are perpetual and will not be | The limited permissions granted above are perpetual and will not be | |||
| revoked by the Internet Society or its successors or assigns. | revoked by the Internet Society or its successors or assigns. | |||
| This document and the information contained herein is provided on an "AS | This document and the information contained herein is provided on an "AS | |||
| IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK | IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK | |||
| FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT | FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT | |||
| Expires March 27, 2000 | ||||
| LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT | LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT | |||
| INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR | INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR | |||
| FITNESS FOR A PARTICULAR PURPOSE. | FITNESS FOR A PARTICULAR PURPOSE. | |||
| Expires March 27, 2000 | Expires November 30, 2000 | |||
| End of changes. 323 change blocks. | ||||
| 761 lines changed or deleted | 970 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||