safety belts.

This commit is contained in:
Nick Martin
2013-12-04 20:54:36 -08:00
parent d4761610da
commit 8ca859b786

View File

@@ -153,6 +153,12 @@ Accounts._getAccountData = function (connectionId, field) {
Accounts._setAccountData = function (connectionId, field, value) {
var data = accountData[connectionId];
// safety belt. shouldn't happen. accountData is set in onConnection,
// we don't have a connectionId until it is set.
if (!data)
return;
if (value === undefined)
delete data[field];
else
@@ -215,10 +221,13 @@ Accounts._setLoginToken = function (connectionId, newToken) {
var closeConnectionsForTokens = function (tokens) {
_.each(tokens, function (token) {
if (_.has(connectionsByLoginToken, token)) {
_.each(connectionsByLoginToken[token], function (connectionId) {
var connection = Accounts._getAccountData(connectionId, 'connection');
if (connection)
connection.close();
// safety belt. close should defer potentially yielding callbacks.
Meteor._noYieldsAllowed(function () {
_.each(connectionsByLoginToken[token], function (connectionId) {
var connection = Accounts._getAccountData(connectionId, 'connection');
if (connection)
connection.close();
});
});
}
});