draft-ietf-xmpp-core-15.txt   draft-ietf-xmpp-core-16.txt 
Network Working Group P. Saint-Andre Network Working Group P. Saint-Andre
Internet-Draft J. Miller Internet-Draft J. Miller
Expires: December 28, 2003 Jabber Software Foundation Expires: January 26, 2004 Jabber Software Foundation
June 29, 2003 July 28, 2003
XMPP Core XMPP Core
draft-ietf-xmpp-core-15 draft-ietf-xmpp-core-16
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026. all provisions of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that other Task Force (IETF), its areas, and its working groups. Note that other
groups may also distribute working documents as Internet-Drafts. groups may also distribute working documents as Internet-Drafts.
skipping to change at page 1, line 31 skipping to change at page 1, line 31
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at http:// The list of current Internet-Drafts can be accessed at http://
www.ietf.org/ietf/1id-abstracts.txt. www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on December 28, 2003. This Internet-Draft will expire on January 26, 2004.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2003). All Rights Reserved. Copyright (C) The Internet Society (2003). All Rights Reserved.
Abstract Abstract
This document describes the core features of the Extensible Messaging This document describes the core features of the Extensible Messaging
and Presence Protocol (XMPP), a protocol for streaming XML elements and Presence Protocol (XMPP), a protocol for streaming XML elements
in order to exchange messages and presence information in close to in order to exchange messages and presence information in close to
skipping to change at page 3, line 15 skipping to change at page 3, line 15
8.2.1 to . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 8.2.1 to . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
8.2.2 from . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 8.2.2 from . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
8.2.3 id . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 8.2.3 id . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
8.2.4 type . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 8.2.4 type . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
8.2.5 xml:lang . . . . . . . . . . . . . . . . . . . . . . . . . . 46 8.2.5 xml:lang . . . . . . . . . . . . . . . . . . . . . . . . . . 46
8.3 Message Stanzas . . . . . . . . . . . . . . . . . . . . . . 47 8.3 Message Stanzas . . . . . . . . . . . . . . . . . . . . . . 47
8.3.1 Types of Message . . . . . . . . . . . . . . . . . . . . . . 47 8.3.1 Types of Message . . . . . . . . . . . . . . . . . . . . . . 47
8.3.2 Children . . . . . . . . . . . . . . . . . . . . . . . . . . 47 8.3.2 Children . . . . . . . . . . . . . . . . . . . . . . . . . . 47
8.4 Presence Stanzas . . . . . . . . . . . . . . . . . . . . . . 49 8.4 Presence Stanzas . . . . . . . . . . . . . . . . . . . . . . 49
8.4.1 Types of Presence . . . . . . . . . . . . . . . . . . . . . 49 8.4.1 Types of Presence . . . . . . . . . . . . . . . . . . . . . 49
8.4.2 Children . . . . . . . . . . . . . . . . . . . . . . . . . . 49 8.4.2 Children . . . . . . . . . . . . . . . . . . . . . . . . . . 50
8.5 IQ Stanzas . . . . . . . . . . . . . . . . . . . . . . . . . 51 8.5 IQ Stanzas . . . . . . . . . . . . . . . . . . . . . . . . . 51
8.5.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 51 8.5.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 51
8.5.2 Types of IQ . . . . . . . . . . . . . . . . . . . . . . . . 52 8.5.2 Types of IQ . . . . . . . . . . . . . . . . . . . . . . . . 52
8.5.3 Children . . . . . . . . . . . . . . . . . . . . . . . . . . 52 8.5.3 Children . . . . . . . . . . . . . . . . . . . . . . . . . . 53
8.6 Extended Namespaces . . . . . . . . . . . . . . . . . . . . 52 8.6 Extended Namespaces . . . . . . . . . . . . . . . . . . . . 53
8.7 Stanza Errors . . . . . . . . . . . . . . . . . . . . . . . 53 8.7 Stanza Errors . . . . . . . . . . . . . . . . . . . . . . . 54
8.7.1 Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 8.7.1 Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
8.7.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 8.7.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
8.7.3 Defined Conditions . . . . . . . . . . . . . . . . . . . . . 55 8.7.3 Defined Conditions . . . . . . . . . . . . . . . . . . . . . 56
8.7.4 Application-Specific Conditions . . . . . . . . . . . . . . 57 8.7.4 Application-Specific Conditions . . . . . . . . . . . . . . 57
9. XML Usage within XMPP . . . . . . . . . . . . . . . . . . . 58 9. XML Usage within XMPP . . . . . . . . . . . . . . . . . . . 59
9.1 Restrictions . . . . . . . . . . . . . . . . . . . . . . . . 58 9.1 Restrictions . . . . . . . . . . . . . . . . . . . . . . . . 59
9.2 XML Namespace Names and Prefixes . . . . . . . . . . . . . . 58 9.2 XML Namespace Names and Prefixes . . . . . . . . . . . . . . 59
9.2.1 Stream Namespace . . . . . . . . . . . . . . . . . . . . . . 58 9.2.1 Stream Namespace . . . . . . . . . . . . . . . . . . . . . . 59
9.2.2 Default Namespace . . . . . . . . . . . . . . . . . . . . . 59 9.2.2 Default Namespace . . . . . . . . . . . . . . . . . . . . . 60
9.2.3 Dialback Namespace . . . . . . . . . . . . . . . . . . . . . 59 9.2.3 Dialback Namespace . . . . . . . . . . . . . . . . . . . . . 60
9.3 Validation . . . . . . . . . . . . . . . . . . . . . . . . . 60 9.3 Validation . . . . . . . . . . . . . . . . . . . . . . . . . 61
9.4 Character Encodings . . . . . . . . . . . . . . . . . . . . 60 9.4 Character Encodings . . . . . . . . . . . . . . . . . . . . 61
9.5 Inclusion of Text Declaration . . . . . . . . . . . . . . . 60 9.5 Inclusion of Text Declaration . . . . . . . . . . . . . . . 61
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . 61 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . 62
10.1 XML Namespace Name for TLS Data . . . . . . . . . . . . . . 61 10.1 XML Namespace Name for TLS Data . . . . . . . . . . . . . . 62
10.2 XML Namespace Name for SASL Data . . . . . . . . . . . . . . 61 10.2 XML Namespace Name for SASL Data . . . . . . . . . . . . . . 62
10.3 XML Namespace Name for Stream Errors . . . . . . . . . . . . 61 10.3 XML Namespace Name for Stream Errors . . . . . . . . . . . . 62
10.4 XML Namespace Name for Stanza Errors . . . . . . . . . . . . 62 10.4 XML Namespace Name for Stanza Errors . . . . . . . . . . . . 63
10.5 Existing Registrations . . . . . . . . . . . . . . . . . . . 62 10.5 Existing Registrations . . . . . . . . . . . . . . . . . . . 63
11. Internationalization Considerations . . . . . . . . . . . . 63 11. Internationalization Considerations . . . . . . . . . . . . 64
12. Security Considerations . . . . . . . . . . . . . . . . . . 64 12. Security Considerations . . . . . . . . . . . . . . . . . . 65
12.1 High Security . . . . . . . . . . . . . . . . . . . . . . . 64 12.1 High Security . . . . . . . . . . . . . . . . . . . . . . . 65
12.2 Client-to-Server Communications . . . . . . . . . . . . . . 64 12.2 Client-to-Server Communications . . . . . . . . . . . . . . 65
12.3 Server-to-Server Communications . . . . . . . . . . . . . . 65 12.3 Server-to-Server Communications . . . . . . . . . . . . . . 66
12.4 Order of Layers . . . . . . . . . . . . . . . . . . . . . . 66 12.4 Order of Layers . . . . . . . . . . . . . . . . . . . . . . 67
12.5 Firewalls . . . . . . . . . . . . . . . . . . . . . . . . . 66 12.5 Firewalls . . . . . . . . . . . . . . . . . . . . . . . . . 67
12.6 Mandatory to Implement Technologies . . . . . . . . . . . . 66 12.6 Mandatory to Implement Technologies . . . . . . . . . . . . 67
Normative References . . . . . . . . . . . . . . . . . . . . 67 Normative References . . . . . . . . . . . . . . . . . . . . 68
Informative References . . . . . . . . . . . . . . . . . . . 69 Informative References . . . . . . . . . . . . . . . . . . . 70
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 69 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 70
A. XML Schemas . . . . . . . . . . . . . . . . . . . . . . . . 70 A. XML Schemas . . . . . . . . . . . . . . . . . . . . . . . . 71
A.1 Stream namespace . . . . . . . . . . . . . . . . . . . . . . 70 A.1 Stream namespace . . . . . . . . . . . . . . . . . . . . . . 71
A.2 Stream error namespace . . . . . . . . . . . . . . . . . . . 71 A.2 Stream error namespace . . . . . . . . . . . . . . . . . . . 72
A.3 TLS namespace . . . . . . . . . . . . . . . . . . . . . . . 72 A.3 TLS namespace . . . . . . . . . . . . . . . . . . . . . . . 74
A.4 SASL namespace . . . . . . . . . . . . . . . . . . . . . . . 72 A.4 SASL namespace . . . . . . . . . . . . . . . . . . . . . . . 74
A.5 Dialback namespace . . . . . . . . . . . . . . . . . . . . . 74 A.5 Dialback namespace . . . . . . . . . . . . . . . . . . . . . 76
A.6 Client namespace . . . . . . . . . . . . . . . . . . . . . . 75 A.6 Client namespace . . . . . . . . . . . . . . . . . . . . . . 77
A.7 Server namespace . . . . . . . . . . . . . . . . . . . . . . 79 A.7 Server namespace . . . . . . . . . . . . . . . . . . . . . . 81
A.8 Stanza error namespace . . . . . . . . . . . . . . . . . . . 83 A.8 Stanza error namespace . . . . . . . . . . . . . . . . . . . 85
B. Revision History . . . . . . . . . . . . . . . . . . . . . . 85 B. Revision History . . . . . . . . . . . . . . . . . . . . . . 87
B.1 Changes from draft-ietf-xmpp-core-14 . . . . . . . . . . . . 85 B.1 Changes from draft-ietf-xmpp-core-15 . . . . . . . . . . . . 87
B.2 Changes from draft-ietf-xmpp-core-13 . . . . . . . . . . . . 85 B.2 Changes from draft-ietf-xmpp-core-14 . . . . . . . . . . . . 87
B.3 Changes from draft-ietf-xmpp-core-12 . . . . . . . . . . . . 85 B.3 Changes from draft-ietf-xmpp-core-13 . . . . . . . . . . . . 87
B.4 Changes from draft-ietf-xmpp-core-11 . . . . . . . . . . . . 86 B.4 Changes from draft-ietf-xmpp-core-12 . . . . . . . . . . . . 87
B.5 Changes from draft-ietf-xmpp-core-10 . . . . . . . . . . . . 86 B.5 Changes from draft-ietf-xmpp-core-11 . . . . . . . . . . . . 88
B.6 Changes from draft-ietf-xmpp-core-09 . . . . . . . . . . . . 86 B.6 Changes from draft-ietf-xmpp-core-10 . . . . . . . . . . . . 88
B.7 Changes from draft-ietf-xmpp-core-08 . . . . . . . . . . . . 86 B.7 Changes from draft-ietf-xmpp-core-09 . . . . . . . . . . . . 88
B.8 Changes from draft-ietf-xmpp-core-07 . . . . . . . . . . . . 87 B.8 Changes from draft-ietf-xmpp-core-08 . . . . . . . . . . . . 89
B.9 Changes from draft-ietf-xmpp-core-06 . . . . . . . . . . . . 87 B.9 Changes from draft-ietf-xmpp-core-07 . . . . . . . . . . . . 89
B.10 Changes from draft-ietf-xmpp-core-05 . . . . . . . . . . . . 87 B.10 Changes from draft-ietf-xmpp-core-06 . . . . . . . . . . . . 89
B.11 Changes from draft-ietf-xmpp-core-04 . . . . . . . . . . . . 87 B.11 Changes from draft-ietf-xmpp-core-05 . . . . . . . . . . . . 89
B.12 Changes from draft-ietf-xmpp-core-03 . . . . . . . . . . . . 88 B.12 Changes from draft-ietf-xmpp-core-04 . . . . . . . . . . . . 89
B.13 Changes from draft-ietf-xmpp-core-02 . . . . . . . . . . . . 88 B.13 Changes from draft-ietf-xmpp-core-03 . . . . . . . . . . . . 90
B.14 Changes from draft-ietf-xmpp-core-01 . . . . . . . . . . . . 88 B.14 Changes from draft-ietf-xmpp-core-02 . . . . . . . . . . . . 90
B.15 Changes from draft-ietf-xmpp-core-00 . . . . . . . . . . . . 88 B.15 Changes from draft-ietf-xmpp-core-01 . . . . . . . . . . . . 90
B.16 Changes from draft-miller-xmpp-core-02 . . . . . . . . . . . 89 B.16 Changes from draft-ietf-xmpp-core-00 . . . . . . . . . . . . 90
Intellectual Property and Copyright Statements . . . . . . . 90 B.17 Changes from draft-miller-xmpp-core-02 . . . . . . . . . . . 91
Intellectual Property and Copyright Statements . . . . . . . 93
1. Introduction 1. Introduction
1.1 Overview 1.1 Overview
The Extensible Messaging and Presence Protocol (XMPP) is an open XML The Extensible Messaging and Presence Protocol (XMPP) is an open XML
[1] protocol for near-real-time messaging, presence, and [1] protocol for near-real-time messaging, presence, and
request-response services. The basic syntax and semantics were request-response services. The basic syntax and semantics were
developed originally within the Jabber open-source community, mainly developed originally within the Jabber open-source community, mainly
in 1999. In 2002, the XMPP WG was chartered with developing an in 1999. In 2002, the XMPP WG was chartered with developing an
skipping to change at page 15, line 36 skipping to change at page 15, line 36
condition element (or elements). condition element (or elements).
Note: the XML namespace name 'urn:ietf:params:xml:ns:xmpp-streams' Note: the XML namespace name 'urn:ietf:params:xml:ns:xmpp-streams'
that qualifies the descriptive element adheres to the format defined that qualifies the descriptive element adheres to the format defined
in The IETF XML Registry [25]. in The IETF XML Registry [25].
4.6.3 Defined Conditions 4.6.3 Defined Conditions
The following stream-level error conditions are defined: The following stream-level error conditions are defined:
o <connection-timeout/> -- the entity has not generated any traffic
over the stream for some period of time (configurable according to
a local service policy).
o <host-gone/> -- the value of the 'to' attribute provided by the o <host-gone/> -- the value of the 'to' attribute provided by the
initiating entity in the stream header corresponds to a hostname initiating entity in the stream header corresponds to a hostname
that is no longer hosted by the server. that is no longer hosted by the server.
o <host-unknown/> -- the value of the 'to' attribute provided by the o <host-unknown/> -- the value of the 'to' attribute provided by the
initiating entity in the stream header does not correspond to a initiating entity in the stream header does not correspond to a
hostname that is hosted by the server. hostname that is hosted by the server.
o <improper-addressing/> -- a stanza sent between two servers lacks o <improper-addressing/> -- a stanza sent between two servers lacks
a 'to' or 'from' attribute (or the attribute has no value). a 'to' or 'from' attribute (or the attribute has no value).
skipping to change at page 16, line 19 skipping to change at page 16, line 23
o <nonmatching-hosts/> -- the hostname provided in a 'from' address o <nonmatching-hosts/> -- the hostname provided in a 'from' address
does not match the hostname (or other validated domain) negotiated does not match the hostname (or other validated domain) negotiated
via SASL or dialback. via SASL or dialback.
o <not-authorized/> -- the entity has attempted to send data before o <not-authorized/> -- the entity has attempted to send data before
authenticating, or otherwise is not authorized to perform an authenticating, or otherwise is not authorized to perform an
action related to stream negotiation; the receiving entity SHOULD action related to stream negotiation; the receiving entity SHOULD
silently drop the offending stanza and MUST NOT process it before silently drop the offending stanza and MUST NOT process it before
sending the stream error. sending the stream error.
o <policy-violation/> -- the entity has violated some local service
policy.
o <remote-connection-failed/> -- the server is unable to properly o <remote-connection-failed/> -- the server is unable to properly
connect to a remote resource that is required for authentication connect to a remote resource that is required for authentication
or authorization. or authorization.
o <resource-constraint/> -- the server is resource-contrained and is o <resource-constraint/> -- the server is resource-contrained and is
unable to service the stream. unable to service the stream.
o <see-other-host/> -- the server will not provide service to the o <see-other-host/> -- the server will not provide service to the
initiating entity but is redirecting traffic to another host; this initiating entity but is redirecting traffic to another host; this
element SHOULD contain CDATA specifying the alternate hostname or element SHOULD contain CDATA specifying the alternate hostname or
skipping to change at page 30, line 13 skipping to change at page 30, line 13
including the STARTTLS feature or any authentication mechanisms) including the STARTTLS feature or any authentication mechanisms)
or an empty features element (to signify that no additional or an empty features element (to signify that no additional
features are available); note that any such additional features features are available); note that any such additional features
are not defined herein, and MUST be defined by the relevant are not defined herein, and MUST be defined by the relevant
extension to XMPP. extension to XMPP.
6.3 SASL Errors 6.3 SASL Errors
The following SASL-related error conditions are defined: The following SASL-related error conditions are defined:
o <bad-protocol/> -- The data provided by the initiating entity does o <aborted/> -- The receiving entity acknowledges an <abort/>
not adhere to the protocol for the requested mechanism; sent in element sent by the initiating entity; sent in response to the
response to the <response/> element. <abort/> element.
o <bad-protocol/> -- The data provided by the initiating entity
could not be processed, e.g. because does not adhere to the
protocol for the requested mechanism; sent in response to the
<response/> element.
o <encryption-required/> -- The mechanism chosen by the initiating o <encryption-required/> -- The mechanism chosen by the initiating
entity may be used only if the stream is already encrypted; sent entity may be used only if the stream is already encrypted; sent
in response to the <auth/> element. in response to the <auth/> element.
o <invalid-authzid/> -- The authzid provided by the initiating o <invalid-authzid/> -- The authzid provided by the initiating
entity is invalid, either because it is incorrectly formatted or entity is invalid, either because it is incorrectly formatted or
because the initiating entity does not have permissions to because the initiating entity does not have permissions to
authorize that ID; sent in response to a <response/> element. authorize that ID; sent in response to a <response/> element.
skipping to change at page 46, line 35 skipping to change at page 46, line 35
that does not meet this restriction, it MUST generate a that does not meet this restriction, it MUST generate a
<nonmatching-hosts/> stream error condition. Both of these conditions <nonmatching-hosts/> stream error condition. Both of these conditions
MUST result in closing of the stream and termination of the MUST result in closing of the stream and termination of the
underlying TCP connection. underlying TCP connection.
8.2.3 id 8.2.3 id
The optional 'id' attribute MAY be used by a sending entity for The optional 'id' attribute MAY be used by a sending entity for
internal tracking of stanzas that it sends and receives (especially internal tracking of stanzas that it sends and receives (especially
for tracking the request-response interaction inherent in the use of for tracking the request-response interaction inherent in the use of
IQ stanzas). If the stanza sent by the sending entity is an IQ stanza IQ stanzas). The 'id' attribute is required for IQ stanzas. If the
of type "get" or "set", the receiving entity MUST include an 'id' stanza sent by the sending entity is an IQ stanza of type "get" or
attribute with the same value in any replies of type "result" or "set", the receiving entity MUST include an 'id' attribute with the
"error". The value of the 'id' attribute is NOT REQUIRED to be unique same value in any replies of type "result" or "error". The value of
either globally, within a domain, or within a stream. the 'id' attribute is NOT REQUIRED to be unique either globally,
within a domain, or within a stream.
8.2.4 type 8.2.4 type
The 'type' attribute specifies detailed information about the purpose The 'type' attribute specifies detailed information about the purpose
or context of the message, presence, or IQ stanza. The particular or context of the message, presence, or IQ stanza. The particular
allowable values for the 'type' attribute vary depending on whether allowable values for the 'type' attribute vary depending on whether
the stanza is a message, presence, or IQ, and thus are defined in the the stanza is a message, presence, or IQ, and thus are defined in the
following sections. following sections.
8.2.5 xml:lang 8.2.5 xml:lang
skipping to change at page 52, line 4 skipping to change at page 52, line 21
| | | |
| <iq type='result' id='1'> | | <iq type='result' id='1'> |
| <------------------------ | | <------------------------ |
| | | |
| <iq type='set' id='2'> | | <iq type='set' id='2'> |
| ------------------------> | | ------------------------> |
| | | |
| <iq type='error' id='2'> | | <iq type='error' id='2'> |
| <------------------------ | | <------------------------ |
| | | |
An entity that receives an IQ request of type "get" or "set" MUST
reply with an IQ response of type "result" or "error" (which response The 'id' attribute is REQUIRED for IQ stanzas. An entity that
MUST preserve the 'id' attribute of the request, if provided). An receives an IQ request of type "get" or "set" MUST reply with an IQ
entity that receives a stanza of type "result" or "error" MUST NOT response of type "result" or "error" (which response MUST preserve
respond to the stanza by sending a further IQ response of type the 'id' attribute of the request). An entity that receives a stanza
"result" or "error"; however, as shown above, the requesting entity of type "result" or "error" MUST NOT respond to the stanza by sending
MAY send another request (e.g., an IQ of type "set" in order to a further IQ response of type "result" or "error"; however, as shown
provide required information discovered through a get/result pair). above, the requesting entity MAY send another request (e.g., an IQ of
type "set" in order to provide required information discovered
through a get/result pair).
8.5.2 Types of IQ 8.5.2 Types of IQ
The 'type' attribute of an IQ stanza is REQUIRED. The 'type' The 'type' attribute of an IQ stanza is REQUIRED. The 'type'
attribute specifies a distinct step within a request-response attribute specifies a distinct step within a request-response
interaction. The value SHOULD be one of the following (all other interaction. The value SHOULD be one of the following (all other
values SHOULD be ignored): values SHOULD be ignored):
o get -- The stanza is a request for information or requirements. o get -- The stanza is a request for information or requirements.
skipping to change at page 71, line 31 skipping to change at page 72, line 31
<xs:schema <xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:xs='http://www.w3.org/2001/XMLSchema'
xmlns:xml='http://www.w3.org/XML/1998/namespace' xmlns:xml='http://www.w3.org/XML/1998/namespace'
targetNamespace='urn:ietf:params:xml:ns:xmpp-streams' targetNamespace='urn:ietf:params:xml:ns:xmpp-streams'
xmlns='urn:ietf:params:xml:ns:xmpp-streams' xmlns='urn:ietf:params:xml:ns:xmpp-streams'
elementFormDefault='qualified'> elementFormDefault='qualified'>
<xs:import namespace='http://www.w3.org/XML/1998/namespace' <xs:import namespace='http://www.w3.org/XML/1998/namespace'
schemaLocation='http://www.w3.org/2001/xml.xsd'/> schemaLocation='http://www.w3.org/2001/xml.xsd'/>
<xs:element name='connection-timeout' type='empty'/>
<xs:element name='host-gone' type='empty'/> <xs:element name='host-gone' type='empty'/>
<xs:element name='host-unknown' type='empty'/> <xs:element name='host-unknown' type='empty'/>
<xs:element name='improper-addressing' type='empty'/> <xs:element name='improper-addressing' type='empty'/>
<xs:element name='internal-server-error' type='empty'/> <xs:element name='internal-server-error' type='empty'/>
<xs:element name='invalid-id' type='empty'/> <xs:element name='invalid-id' type='empty'/>
<xs:element name='invalid-namespace' type='empty'/> <xs:element name='invalid-namespace' type='empty'/>
<xs:element name='nonmatching-hosts' type='empty'/> <xs:element name='nonmatching-hosts' type='empty'/>
<xs:element name='not-authorized' type='empty'/> <xs:element name='not-authorized' type='empty'/>
<xs:element name='policy-violation' type='xs:string'/>
<xs:element name='remote-connection-failed' type='empty'/> <xs:element name='remote-connection-failed' type='empty'/>
<xs:element name='resource-constraint' type='empty'/> <xs:element name='resource-constraint' type='empty'/>
<xs:element name='see-other-host' type='xs:string'/> <xs:element name='see-other-host' type='xs:string'/>
<xs:element name='system-shutdown' type='empty'/> <xs:element name='system-shutdown' type='empty'/>
<xs:element name='undefined-condition' type='empty'/> <xs:element name='undefined-condition' type='empty'/>
<xs:element name='unsupported-stanza-type' type='empty'/> <xs:element name='unsupported-stanza-type' type='empty'/>
<xs:element name='unsupported-version' type='xs:string'/> <xs:element name='unsupported-version' type='xs:string'/>
<xs:element name='xml-not-well-formed' type='empty'/> <xs:element name='xml-not-well-formed' type='empty'/>
<xs:element name='text' type='xs:string'> <xs:element name='text' type='xs:string'>
skipping to change at page 73, line 38 skipping to change at page 75, line 26
</xs:element> </xs:element>
<xs:element name='challenge' type='xs:NMTOKEN'/> <xs:element name='challenge' type='xs:NMTOKEN'/>
<xs:element name='response' type='xs:NMTOKEN'/> <xs:element name='response' type='xs:NMTOKEN'/>
<xs:element name='abort' type='empty'/> <xs:element name='abort' type='empty'/>
<xs:element name='success' type='empty'/> <xs:element name='success' type='empty'/>
<xs:element name='failure'> <xs:element name='failure'>
<xs:complexType> <xs:complexType>
<xs:choice maxOccurs='1'> <xs:choice maxOccurs='1'>
<xs:element ref='aborted'/>
<xs:element ref='bad-protocol'/> <xs:element ref='bad-protocol'/>
<xs:element ref='encryption-required'/> <xs:element ref='encryption-required'/>
<xs:element ref='invalid-authzid'/> <xs:element ref='invalid-authzid'/>
<xs:element ref='invalid-mechanism'/> <xs:element ref='invalid-mechanism'/>
<xs:element ref='invalid-realm'/> <xs:element ref='invalid-realm'/>
<xs:element ref='mechanism-too-weak'/> <xs:element ref='mechanism-too-weak'/>
<xs:element ref='not-authorized'/> <xs:element ref='not-authorized'/>
<xs:element ref='temporary-auth-failure'/> <xs:element ref='temporary-auth-failure'/>
</xs:choice> </xs:choice>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name='aborted' type='empty'/>
<xs:element name='bad-protocol' type='empty'/> <xs:element name='bad-protocol' type='empty'/>
<xs:element name='encryption-required' type='empty'/> <xs:element name='encryption-required' type='empty'/>
<xs:element name='invalid-authzid' type='empty'/> <xs:element name='invalid-authzid' type='empty'/>
<xs:element name='invalid-mechanism' type='empty'/> <xs:element name='invalid-mechanism' type='empty'/>
<xs:element name='invalid-realm' type='empty'/> <xs:element name='invalid-realm' type='empty'/>
<xs:element name='mechanism-too-weak' type='empty'/> <xs:element name='mechanism-too-weak' type='empty'/>
<xs:element name='not-authorized' type='empty'/> <xs:element name='not-authorized' type='empty'/>
<xs:element name='temporary-auth-failure' type='empty'/> <xs:element name='temporary-auth-failure' type='empty'/>
<xs:simpleType name='empty'> <xs:simpleType name='empty'>
skipping to change at page 78, line 32 skipping to change at page 80, line 22
maxOccurs='1'/> maxOccurs='1'/>
</xs:sequence> </xs:sequence>
<xs:attribute name='to' <xs:attribute name='to'
type='xs:string' type='xs:string'
use='optional'/> use='optional'/>
<xs:attribute name='from' <xs:attribute name='from'
type='xs:string' type='xs:string'
use='optional'/> use='optional'/>
<xs:attribute name='id' <xs:attribute name='id'
type='xs:NMTOKEN' type='xs:NMTOKEN'
use='optional'/> use='required'/>
<xs:attribute ref='xml:lang' use='optional'/> <xs:attribute ref='xml:lang' use='optional'/>
<xs:attribute name='type' use='required'> <xs:attribute name='type' use='required'>
<xs:simpleType> <xs:simpleType>
<xs:restriction base='xs:NCName'> <xs:restriction base='xs:NCName'>
<xs:enumeration value='get'/> <xs:enumeration value='get'/>
<xs:enumeration value='set'/> <xs:enumeration value='set'/>
<xs:enumeration value='result'/> <xs:enumeration value='result'/>
<xs:enumeration value='error'/> <xs:enumeration value='error'/>
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
skipping to change at page 82, line 37 skipping to change at page 84, line 27
maxOccurs='1'/> maxOccurs='1'/>
</xs:sequence> </xs:sequence>
<xs:attribute name='to' <xs:attribute name='to'
type='xs:string' type='xs:string'
use='required'/> use='required'/>
<xs:attribute name='from' <xs:attribute name='from'
type='xs:string' type='xs:string'
use='required'/> use='required'/>
<xs:attribute name='id' <xs:attribute name='id'
type='xs:NMTOKEN' type='xs:NMTOKEN'
use='optional'/> use='required'/>
<xs:attribute ref='xml:lang' use='optional'/> <xs:attribute ref='xml:lang' use='optional'/>
<xs:attribute name='type' use='required'> <xs:attribute name='type' use='required'>
<xs:simpleType> <xs:simpleType>
<xs:restriction base='xs:NCName'> <xs:restriction base='xs:NCName'>
<xs:enumeration value='get'/> <xs:enumeration value='get'/>
<xs:enumeration value='set'/> <xs:enumeration value='set'/>
<xs:enumeration value='result'/> <xs:enumeration value='result'/>
<xs:enumeration value='error'/> <xs:enumeration value='error'/>
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
skipping to change at page 85, line 10 skipping to change at page 87, line 10
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
</xs:schema> </xs:schema>
Appendix B. Revision History Appendix B. Revision History
Note to RFC Editor: please remove this entire appendix, and the Note to RFC Editor: please remove this entire appendix, and the
corresponding entries in the table of contents, prior to publication. corresponding entries in the table of contents, prior to publication.
B.1 Changes from draft-ietf-xmpp-core-14 B.1 Changes from draft-ietf-xmpp-core-15
o Added <connection-timeout/> and <policy-violation/> stream errors.
o Added <aborted/> SASL error and clarified <bad-protocol/> error.
o Made 'id' required for IQ stanzas.
B.2 Changes from draft-ietf-xmpp-core-14
o Added SRV lookup for client-to-server communications. o Added SRV lookup for client-to-server communications.
o Changed server SRV record to conform to RFC 2782; specifically, o Changed server SRV record to conform to RFC 2782; specifically,
the service identifier was changed from 'jabber' to the service identifier was changed from 'jabber' to
'jabber-server'. 'jabber-server'.
B.2 Changes from draft-ietf-xmpp-core-13 B.3 Changes from draft-ietf-xmpp-core-13
o Clarified stream restart after successful TLS and SASL o Clarified stream restart after successful TLS and SASL
negotiation. negotiation.
o Clarified requirement for resolution of DNS hostnames. o Clarified requirement for resolution of DNS hostnames.
o Clarified text regarding namespaces. o Clarified text regarding namespaces.
o Clarified examples regarding empty <stream:features/> element. o Clarified examples regarding empty <stream:features/> element.
o Added several more SASL error conditions. o Added several more SASL error conditions.
o Changed <invalid-xml/> stream error to <improper-addressing/> and o Changed <invalid-xml/> stream error to <improper-addressing/> and
added to schema. added to schema.
o Made small editorial changes and fixed several schema errors. o Made small editorial changes and fixed several schema errors.
B.3 Changes from draft-ietf-xmpp-core-12 B.4 Changes from draft-ietf-xmpp-core-12
o Moved server dialback to a separate section; clarified its o Moved server dialback to a separate section; clarified its
security characteristics and its role in the protocol. security characteristics and its role in the protocol.
o Adjusted error handling syntax and semantics per list discussion. o Adjusted error handling syntax and semantics per list discussion.
o Further clarified length of node identifiers and total length of o Further clarified length of node identifiers and total length of
JIDs. JIDs.
o Documented message type='normal'. o Documented message type='normal'.
o Corrected several small errors in the TLS and SASL sections. o Corrected several small errors in the TLS and SASL sections.
o Corrected several errors in the schemas. o Corrected several errors in the schemas.
B.4 Changes from draft-ietf-xmpp-core-11 B.5 Changes from draft-ietf-xmpp-core-11
o Corrected several small errors in the TLS and SASL sections. o Corrected several small errors in the TLS and SASL sections.
o Made small editorial changes and fixed several schema errors. o Made small editorial changes and fixed several schema errors.
B.5 Changes from draft-ietf-xmpp-core-10 B.6 Changes from draft-ietf-xmpp-core-10
o Adjusted TLS content regarding certificate validation process. o Adjusted TLS content regarding certificate validation process.
o Specified that stanza error extensions for specific applications o Specified that stanza error extensions for specific applications
are to be properly namespaced children of the relevant descriptive are to be properly namespaced children of the relevant descriptive
element. element.
o Clarified rules for inclusion of the 'id' attribute. o Clarified rules for inclusion of the 'id' attribute.
o Specified that the 'xml:lang' attribute SHOULD be included (per o Specified that the 'xml:lang' attribute SHOULD be included (per
list discussion). list discussion).
o Made small editorial changes and fixed several schema errors. o Made small editorial changes and fixed several schema errors.
B.6 Changes from draft-ietf-xmpp-core-09 B.7 Changes from draft-ietf-xmpp-core-09
o Fixed several dialback error conditions. o Fixed several dialback error conditions.
o Cleaned up rules regarding TLS and certificate processing based on o Cleaned up rules regarding TLS and certificate processing based on
off-list feedback. off-list feedback.
o Changed <stream-condition/> and <stanza-condition/> elements to o Changed <stream-condition/> and <stanza-condition/> elements to
<condition/>. <condition/>.
o Added or modified several stream and stanza error conditions. o Added or modified several stream and stanza error conditions.
o Specified only one child allowed for IQ, or two if type="error". o Specified only one child allowed for IQ, or two if type="error".
o Fixed several errors in the schemas. o Fixed several errors in the schemas.
B.7 Changes from draft-ietf-xmpp-core-08 B.8 Changes from draft-ietf-xmpp-core-08
o Incorporated list discussion regarding addressing, SASL, TLS, TCP, o Incorporated list discussion regarding addressing, SASL, TLS, TCP,
dialback, namespaces, extensibility, and the meaning of 'ignore' dialback, namespaces, extensibility, and the meaning of 'ignore'
for routers and recipients. for routers and recipients.
o Specified dialback error conditions. o Specified dialback error conditions.
o Made small editorial changes to address RFC Editor requirements. o Made small editorial changes to address RFC Editor requirements.
B.8 Changes from draft-ietf-xmpp-core-07 B.9 Changes from draft-ietf-xmpp-core-07
o Made several small editorial changes. o Made several small editorial changes.
B.9 Changes from draft-ietf-xmpp-core-06 B.10 Changes from draft-ietf-xmpp-core-06
o Added text regarding certificate validation in TLS negotiation per o Added text regarding certificate validation in TLS negotiation per
list discussion. list discussion.
o Clarified nature of XML restrictions per discussion with W3C, and o Clarified nature of XML restrictions per discussion with W3C, and
moved XML Restrictions subsection under "XML Usage within XMPP". moved XML Restrictions subsection under "XML Usage within XMPP".
o Further clarified that XML streams are unidirectional. o Further clarified that XML streams are unidirectional.
o Changed stream error and stanza error namespace names to conform o Changed stream error and stanza error namespace names to conform
to the format defined in The IETF XML Registry [25]. to the format defined in The IETF XML Registry [25].
o Removed note to RFC Editor regarding provisional namespace names. o Removed note to RFC Editor regarding provisional namespace names.
B.10 Changes from draft-ietf-xmpp-core-05 B.11 Changes from draft-ietf-xmpp-core-05
o Added <invalid-namespace/> as a stream error condition. o Added <invalid-namespace/> as a stream error condition.
o Adjusted security considerations per discussion at IETF 56 and on o Adjusted security considerations per discussion at IETF 56 and on
list. list.
B.11 Changes from draft-ietf-xmpp-core-04 B.12 Changes from draft-ietf-xmpp-core-04
o Added server-to-server examples for TLS and SASL. o Added server-to-server examples for TLS and SASL.
o Changed error syntax, rules, and examples based on list o Changed error syntax, rules, and examples based on list
discussion. discussion.
o Added schemas for the TLS, stream error, and stanza error o Added schemas for the TLS, stream error, and stanza error
namespaces. namespaces.
o Added note to RFC Editor regarding provisional namespace names. o Added note to RFC Editor regarding provisional namespace names.
o Made numerous small editorial changes and clarified text o Made numerous small editorial changes and clarified text
throughout. throughout.
B.12 Changes from draft-ietf-xmpp-core-03 B.13 Changes from draft-ietf-xmpp-core-03
o Clarified rules and procedures for TLS and SASL. o Clarified rules and procedures for TLS and SASL.
o Amplified stream error code syntax per list discussion. o Amplified stream error code syntax per list discussion.
o Made numerous small editorial changes. o Made numerous small editorial changes.
B.13 Changes from draft-ietf-xmpp-core-02 B.14 Changes from draft-ietf-xmpp-core-02
o Added dialback schema. o Added dialback schema.
o Removed all DTDs since schemas provide more complete definitions. o Removed all DTDs since schemas provide more complete definitions.
o Added stream error codes. o Added stream error codes.
o Clarified error code "philosophy". o Clarified error code "philosophy".
B.14 Changes from draft-ietf-xmpp-core-01 B.15 Changes from draft-ietf-xmpp-core-01
o Updated the addressing restrictions per list discussion and added o Updated the addressing restrictions per list discussion and added
references to the new nodeprep and resourceprep profiles. references to the new nodeprep and resourceprep profiles.
o Corrected error in Stream Authentication regarding 'version' o Corrected error in Stream Authentication regarding 'version'
attribute. attribute.
o Made numerous small editorial changes. o Made numerous small editorial changes.
B.15 Changes from draft-ietf-xmpp-core-00 B.16 Changes from draft-ietf-xmpp-core-00
o Added information about TLS from list discussion. o Added information about TLS from list discussion.
o Clarified meaning of "ignore" based on list discussion. o Clarified meaning of "ignore" based on list discussion.
o Clarified information about Universal Character Set data and o Clarified information about Universal Character Set data and
character encodings. character encodings.
o Provided base64-decoded information for examples. o Provided base64-decoded information for examples.
o Fixed several errors in the schemas. o Fixed several errors in the schemas.
o Made numerous small editorial fixes. o Made numerous small editorial fixes.
B.16 Changes from draft-miller-xmpp-core-02 B.17 Changes from draft-miller-xmpp-core-02
o Brought Streams Authentication section into line with discussion o Brought Streams Authentication section into line with discussion
on list and at IETF 55 meeting. on list and at IETF 55 meeting.
o Added information about the optional 'xml:lang' attribute per o Added information about the optional 'xml:lang' attribute per
discussion on list and at IETF 55 meeting. discussion on list and at IETF 55 meeting.
o Specified that validation is neither required nor recommended, and o Specified that validation is neither required nor recommended, and
that the formal definitions (DTDs and schemas) are included for that the formal definitions (DTDs and schemas) are included for
descriptive purposes only. descriptive purposes only.
 End of changes. 34 change blocks. 
96 lines changed or deleted 124 lines changed or added

This html diff was produced by rfcdiff 1.34. The latest version is available from http://tools.ietf.org/tools/rfcdiff/