On Feb 19, 2008, at 7:55 AM, Kris Zyp wrote:

Extra Connection Support

The XMLHttpRequest should define a property called "extraConnection". When
extraConnection is set to true, it indicates that this XHR object's
connection SHOULD NOT be counted against the user agent's connection limit. That is if the user agent adheres to the two-connection limit as recommended by RFC 2616 section 8.1.4, it SHOULD allow two connections not counting this XHR object's connection. If the user agent has other or additional connection limits, this connection should not be counted in the accounting for these
connection limits.

As with pipelining, I think this would be better handled at the HTTP level than the XHR API level. We could define response headers for a server to indicate that it allows more than two connections per client, or alternately that a specific connection should not count towards the limit.

 - Maciej



Only one XHR object should be allowed to gain extra connection status per document per server. Each document in the browser may be permitted one extra
connection per server. Within a document if an XHR object has an extra
connection status for domain1.com, no other XHR objects may have extra
connection status for that server until the first XHR object has terminated
it's connection. However, another XHR object may have extra connection
status to domain2.com. Each document in the browser should have it's own set of extra connections for XHR objects. This limitation is intended to prevent
a vector of denial of service attacks.


To gain extra connection status, the extraConnection property on the XHR object can be set to true. When it is set to true, if the XHR object is allowed to gain extra connection status (no other XHR objects currently have extra connection status in this document for the specified target server), the XHR object will be given extra connection status and subsequent access to the property will return true. If the XHR object is not allowed to gain extra connection status, subsequent access to the property should return
false. The following is an example of valid usage:

var xhr = new XMLHttpRequest();
xhr.open("GET","/resource",true);
xhr.extraConnection = true;
var succesful = xhr.extraConnection;

Setting the extraConnection property should throw an exception if it is called before a URL is provided to the XHR object (through the open method or the constructor). The extra connection status remains in effect until the connection is closed (by network error on normal termination), at which point
the property should return false.

Since the extraConnection property usually indicates that the response will be a long-lived streaming response, user agents SHOULD NOT pipeline requests on this connection unless the author explicitly specifies such pipelines using pipelining
control (see the Pipelining Control Proposal).


Reply via email to