Skip to content

Commit

Permalink
If the realtime system returns an error status code below 500, pass t…
Browse files Browse the repository at this point in the history
…his back to the client insteasd of trying fallback transports or hosts
  • Loading branch information
paddybyers committed Jun 28, 2015
1 parent f09714e commit 72bb7d8
Showing 1 changed file with 14 additions and 5 deletions.
19 changes: 14 additions & 5 deletions common/lib/transport/connectionmanager.js
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,11 @@ var ConnectionManager = (function() {
return;
}
if(err) {
/* a 4XX error, such as 401, signifies that there is an error that will not be resolved by another transport */
if(err.statusCode < 500) {
callback(err);
return;
}
self.chooseTransportForHost(transportParams, candidateTransports, callback);
return;
}
Expand Down Expand Up @@ -280,9 +285,11 @@ var ConnectionManager = (function() {
transportParams.host = Utils.arrRandomElement(candidateHosts);
self.chooseTransportForHost(transportParams, self.httpTransports.slice(), function(err, httpTransport) {
if(err) {
if(!err.terminal) {
tryFallbackHosts();
if(err.terminal || err.statusCode < 500) {
callback(err);
return;
}
tryFallbackHosts();
return;
}
/* succeeded */
Expand All @@ -293,9 +300,11 @@ var ConnectionManager = (function() {

this.chooseTransportForHost(transportParams, this.httpTransports.slice(), function(err, httpTransport) {
if(err) {
if(!err.terminal) {
tryFallbackHosts();
if(err.terminal || err.statusCode < 500) {
callback(err);
return;
}
tryFallbackHosts();
return;
}
/* succeeded */
Expand Down Expand Up @@ -611,7 +620,7 @@ var ConnectionManager = (function() {
var self = this;
var auth = this.realtime.auth;
var connectErr = function(err) {
Logger.logAction(Logger.LOG_ERROR, 'ConnectionManager.connectImpl()', err);
Logger.logAction(Logger.LOG_ERROR, 'ConnectionManager.connectImpl()', 'Connection attempt failed with error; err = ' + ErrorInfo.fromValues(err).toString());
var state = self.state;
if(state == states.closing || state == states.closed || state == states.failed) {
/* do nothing */
Expand Down

0 comments on commit 72bb7d8

Please sign in to comment.