Instead of checking the uid on the array index of the queue, instead the object property "uid" was checked on the queue iteself. Because this will always evaluate to "undefined" the same listener could be added multiple times to the same context.
* http_parser: update to 2.2 * uv: Upgrade to v0.11.17 * v8: Upgrade to 18.104.22.168 * buffer: optimize writeInt* methods (Paul Loyd) * child_process: better error handling (Alexis Campailla) * cluster: do not synchronously emit 'setup' event (Sam Roberts) * cluster: restore backwards compatibility and various fixes (Sam Roberts) * crypto: remove unnecessary OpenSSL_add_all_digests (Yorkie) * crypto: support GCM authenticated encryption mode. (Ingmar Runge) * dns: add resolveSoa and 'SOA' rrtype (Tuğrul Topuz) * events: move EE c'tor guts to EventEmitter.init (Bert Belder) * http: DELETE shouldn't default to chunked encoding (Lalit Kapoor) * http: parse the status message in a http response. (Cam Swords) * node: fix removing AsyncListener in callback (Vladimir Kurchatkin) * node: follow specification, zero-fill ArrayBuffers (Trevor Norris) * openssl: use ASM optimized routines (Fedor Indutny) * process: allow nextTick infinite recursion (Trevor Norris) * querystring: remove `name` from `stringify()` (Yorkie) * timers: setImmediate v8 optimization fix (pflannery) * tls: add serialNumber to getPeerCertificate() (Ben Noordhuis) * tls: reintroduce socket.encrypted (Fedor Indutny) * tls: fix handling of asterisk in SNI context (Fedor Indutny) * util: Format negative zero as '-0' (David Chan) * vm: fix race condition in timeout (Alexis Campailla) * windows: fix dns lookup of localhost with ipv6 (Alexis Campailla)
Master was disconnecting its workers as soon as they both started up. Meanwhile, the workers were trying to listen. Its a race, sometimes the disconnect would happen between when worker gets the response message, and acks that message with a 'listening'. This worked OK after v0.11 introduced a behaviour where disconnect would always exit the worker, but once that backwards-incompatible behaviour is removed, the worker lives long enough to try and respond to the master, and child_process errors at the attempt to send from a disconnected child.
Fix inadvertent v0.11 changes to the definition of suicide, particularly the relationship between suicide state, the disconnect event, and when exit should occur. In v0.10, workers don't forcibly exit on disconnect, it doesn't give them time to do a graceful finish of open client connections, they exit under normal node rules - when there is nothing left to do. But on unexpected disconnect they do exit so the workers aren't left around after the master. Note that a test as-written was invalid, it failed against the v0.10 cluster API, demonstrating that it was an undocumented API change.
QueryString.stringify() allowed a fourth argument that was used as a conditional in the return value, but was undocumented, not used by core and always was always false/undefiend. So the argument and conditional have been removed. Signed-off-by: Trevor Norris <email@example.com>