Skip to content
Permalink
Browse files
Removed xhr pooling since failing cross-domain requests leaves the xh…
…r object in an undefined state in Firefox. Also rewrote comments related to the active xhr list so that they make sense.
  • Loading branch information
jaubourg committed Jan 13, 2011
1 parent 667a3b3 commit 5795615
Showing 1 changed file with 9 additions and 18 deletions.
@@ -1,14 +1,11 @@
(function( jQuery ) {

var // Next fake timer id
xhrPollingId = jQuery.now(),
var // Next active xhr id
xhrId = jQuery.now(),

// Callbacks hashtable
// active xhrs
xhrs = {},

// XHR pool
xhrPool = [],

// #5280: see below
xhrUnloadAbortInstalled;

@@ -42,7 +39,7 @@ jQuery.ajax.transport( function( s , determineDataType ) {
}

// Get a new xhr
var xhr = xhrPool.pop() || s.xhr(),
var xhr = s.xhr(),
handle;

// Open the socket
@@ -74,14 +71,12 @@ jQuery.ajax.transport( function( s , determineDataType ) {
try {
xhr.send( ( s.hasContent && s.data ) || null );
} catch(e) {
// Store back into pool
xhrPool.push( xhr );
complete(0, "error", "" + e);
return;
}

// Listener
callback = function( isAbort ) {
callback = function( _ , isAbort ) {

// Was never called and is aborted or complete
if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
@@ -94,8 +89,6 @@ jQuery.ajax.transport( function( s , determineDataType ) {
if (handle) {
xhr.onreadystatechange = jQuery.noop;
delete xhrs[ handle ];
handle = undefined;
xhrPool.push( xhr );
}

// If it's an abort
@@ -171,18 +164,16 @@ jQuery.ajax.transport( function( s , determineDataType ) {

} else {

// Listener is externalized to handle abort on unload
handle = xhrPollingId++;
// Add to list of active xhrs
handle = xhrId++;
xhrs[ handle ] = xhr;
xhr.onreadystatechange = function() {
callback();
};
xhr.onreadystatechange = callback;
}
},

abort: function() {
if ( callback ) {
callback(1);
callback(0,1);
}
}
};

0 comments on commit 5795615

Please sign in to comment.