Remove "Password is the plaintext password." comment from SRP Server. Likely a cut and paste error, as SRP server is never passed the plaintext password.
IE8 is 95% to blame, our code is 5% to blame for using the same
identifier twice in a scope (still not clear to me if that is
technically legal code), minification is 0% to blame even though
it revealed the issue :)
The minifier changed the two uses of HTMLTag into two different symbols:
var n = function r() {
var t = this instanceof e.Tag ? this : new r(), n = 0, o = arguments.length && arguments[0];
return o && "object" == typeof o && o.constructor === Object && (t.attrs = o, n++),
n < arguments.length && (t.children = Array.prototype.slice.call(arguments, n)),
t;
};
return n.prototype = new e.Tag(), n.prototype.constructor = n, n.prototype.tagName = t,
n;
Then, IE8 apparently actually creates two separate objects for 'n' and
'r'; see #3 at http://kiro.me/blog/nfe_dilemma.html
So just because n.prototype is an e.Tag doesn't make r.prototype a e.Tag
This means that `new r() instanceof e.Tag` is false, and so the first
line of the function leads to infinite recursion.
I'm not sure if this is an uglify bug as well; dealing well with
multiple declarations of the same function may be out of spec.
Fixes#2037.
The minifier changed the two uses of HTMLTag into two different symbols:
var n = function r() {
var t = this instanceof e.Tag ? this : new r(), n = 0, o = arguments.length && arguments[0];
return o && "object" == typeof o && o.constructor === Object && (t.attrs = o, n++),
n < arguments.length && (t.children = Array.prototype.slice.call(arguments, n)),
t;
};
return n.prototype = new e.Tag(), n.prototype.constructor = n, n.prototype.tagName = t,
n;
Then, IE8 apparently actually creates two separate objects for 'n' and
'r'; see #3 at http://kiro.me/blog/nfe_dilemma.html
So just because n.prototype is an e.Tag doesn't make r.prototype a e.Tag
This means that `new r() instanceof e.Tag` is false, and so the first
line of the function leads to infinite recursion.
I'm not sure if this is an uglify bug as well; dealing well with
multiple declarations of the same function may be out of spec.
Fixes#2037.
This reverts commit 32fc06e7f8.
As Glasser points out, our command option parsing is such that all `-a`
flags for commands have to be consistent in whether they are boolean or
not. Since we could easily imagine wanting a boolean `-a` or `-r` flag
in the future, we should be careful about adding these aliases. We'll
update the docs to remove `-a` and `-r` instead.
Session.destroy is now folded in to Session.close. Server._closeSession
is renamed to Server._removeSession, since the `destroy()` call inside
`_closeSession` was always a no-op.
The getRawObjects call can throw (eg, if you can't connect to the mongo
server for too long). A few pieces of state were being corrupted in
that case:
- self._results was being set too early, leading to 'first' not being
set on future _pollMongo calls, and_multiplexer.ready() never being
called. This had two effects:
- The observe (and thus any subscription) would never become
ready(). Due to deduping, *no observe on this query* would
ever become ready either. This also implies that the
observeChanges that are part of _publishCursor would never return,
so the sub.onStop would never get called, so the observeHandle
would never stop, leading not only to leaks, but for an inability
for that query to ever stop being deduped with the corrupted
PollingObserveDriver!
- The onFlush calls would throw a "not ready" error instead of
calling the callback, so (a) errors would be logged and (b) write
fences would never be closed
Fixed this by not writing to self._results at the top of the function.
- writesForCycle was being lost, so those write fences would never
close. Fixed this by pushing writesForCycle back onto _pendingWrites
if getRawObjects throws.