Timothy J Fontaine [Wed, 7 Aug 2013 00:14:53 +0000 (17:14 -0700)]
blog: Post for v0.11.5
Eran Hammer [Mon, 5 Aug 2013 09:56:40 +0000 (02:56 -0700)]
stream: Fix double pipe error emit
If an error listener is added to a stream using once() before it is
piped, it is invoked and removed during pipe() but before pipe() sees it
which causes it to be emitted again.
Fixes #4155 #4978
isaacs [Mon, 5 Aug 2013 20:56:05 +0000 (13:56 -0700)]
doc: Update LICENSE for npm's Artistic 2.0
mstarzinger@chromium.org [Mon, 15 Jul 2013 11:41:41 +0000 (11:41 +0000)]
v8: back-port fix for CVE-2013-2882
Quoting the CVE:
Google V8, as used in Google Chrome before 28.0.1500.95, allows
remote attackers to cause a denial of service or possibly have
unspecified other impact via vectors that leverage "type confusion."
Likely has zero impact on node.js because it only runs local, trusted
code but let's apply it anyway.
This is a back-port of upstream commit r15665. Original commit log:
Use internal array as API function cache.
R=yangguo@chromium.org
BUG=chromium:260106
TEST=cctest/test-api/Regress260106
Review URL: https://codereview.chromium.org/
19159003
Fixes #5973.
Forrest L Norvell [Thu, 14 Mar 2013 20:31:18 +0000 (13:31 -0700)]
doc: document domain.enter() and domain.exit()
Adds the documentation requested in #5017.
Sam Roberts [Fri, 2 Aug 2013 19:41:24 +0000 (12:41 -0700)]
doc: fs.open, fix flag/mode confusion, etc.
Flags and modes aren't the same, symlinks are followed in all of the
path but the last component, docs should say something about what the
mode argument is for and when its used, fs.openSync should point to the
function that contains the docs for its args, as fs.writeSync does.
isaacs [Fri, 2 Aug 2013 21:55:01 +0000 (14:55 -0700)]
npm: Upgrade to 1.3.7
Ben Noordhuis [Thu, 1 Aug 2013 14:09:42 +0000 (16:09 +0200)]
test: future-proof simple/test-event-emitter-memory-leak
Run the garbage collector before running the actual test. It doesn't
matter now but if in the future something in node.js core creates a lot
of reclaimable garbage, that will break the test's expectation.
Ben Noordhuis [Thu, 1 Aug 2013 14:00:40 +0000 (16:00 +0200)]
test: fix pummel/test-net-connect-memleak
* Run the garbage collector before creating the big array. It doesn't
matter now but if in the future something in node.js core creates
a lot of reclaimable garbage, that will break the test's expectation.
* The first RSS check was being done too late. The garbage collector
might have run before the check, throwing off the 'reclaimed memory'
calculation.
* Due to changes in how V8 represents the big array internally, the
actual memory usage is just below 256 MB on x64. Update the test's
expectation.
Ben Noordhuis [Thu, 1 Aug 2013 12:35:13 +0000 (14:35 +0200)]
events: fix memory leak, don't leak event names
Before this commit, events were set to undefined rather than deleted
from the EventEmitter's backing dictionary for performance reasons:
`delete obj.key` causes a transition of the dictionary's hidden class
and that can be costly.
Unfortunately, that introduces a memory leak when many events are added
and then removed again. The strings containing the event names are never
reclaimed by the garbage collector because they remain part of the
dictionary.
That's why this commit makes EventEmitter delete events again. This
effectively reverts commit 0397223.
Fixes #5970.
Ben Noordhuis [Wed, 31 Jul 2013 03:50:26 +0000 (05:50 +0200)]
http: improve chunked res.write(buf) performance
Avoid a costly buffer-to-string operation. Instead, allocate a new
buffer, copy the chunk header and data into it and send that.
The speed difference is negligible on small payloads but it really
shines with larger (10+ kB) chunks. benchmark/http/end-vs-write-end
with 64 kB chunks gives 45-50% higher throughput. With 1 MB chunks,
the difference is a staggering 590%.
Of course, YMMV will vary with real workloads and networks but this
commit should have a positive impact on CPU and memory consumption.
Big kudos to Wyatt Preul (@wpreul) for reporting the issue and providing
the initial patch.
Fixes #5941 and #5944.
Wyatt Preul [Tue, 11 Jun 2013 20:56:03 +0000 (15:56 -0500)]
docs: Warning about consuming response
Ben Noordhuis [Tue, 30 Jul 2013 12:27:13 +0000 (14:27 +0200)]
crypto: fix assert() on malformed hex input
Use the StringBytes::IsValidString() function introduced in commit
dce26cc to ensure that the input string meets the expectations of the
other StringBytes functions before processing it further.
Fixes the following assertion:
Assertion failed: (str->Length() % 2 == 0 && "invalid hex string
length"), function StorageSize, file ../../src/string_bytes.cc,
line 301.
Fixes #5725.
Ben Noordhuis [Tue, 30 Jul 2013 12:26:11 +0000 (14:26 +0200)]
string_bytes: add StringBytes::IsValidString()
Performs a quick, non-exhaustive check on the input string to see if
it's compatible with the specified string encoding.
Curently it only checks that hex strings have a length that is a
multiple of two.
Ben Noordhuis [Sat, 27 Jul 2013 22:05:10 +0000 (00:05 +0200)]
doc: clarify fs.read() offset argument
Andrew Chilton [Sat, 27 Jul 2013 11:13:55 +0000 (23:13 +1200)]
doc: add nodejs.geek.nz to the community page
Rod Vagg [Sat, 27 Jul 2013 05:20:08 +0000 (15:20 +1000)]
doc: add nodejs.org.au to community listing
Ben Noordhuis [Thu, 25 Jul 2013 10:24:40 +0000 (12:24 +0200)]
test: fix simple/test-setproctitle
The title shouldn't be too long; libuv's uv_set_process_title() out of
security considerations no longer overwrites envp, only argv, so the
maximum title length is possibly quite short.
Fixes #5908.
Timothy J Fontaine [Fri, 26 Jul 2013 00:03:21 +0000 (17:03 -0700)]
blog: Post for v0.10.15
Timothy J Fontaine [Fri, 26 Jul 2013 00:03:03 +0000 (17:03 -0700)]
Now working on 0.10.16
Timothy J Fontaine [Fri, 26 Jul 2013 00:02:38 +0000 (17:02 -0700)]
Merge branch 'v0.10.15-release' into v0.10
Timothy J Fontaine [Thu, 25 Jul 2013 23:26:15 +0000 (16:26 -0700)]
2013.07.25, Version 0.10.15 (Stable)
* src: fix process.getuid() return value (Ben Noordhuis)
Ben Noordhuis [Thu, 25 Jul 2013 22:24:27 +0000 (00:24 +0200)]
src: fix process.getuid() return value
And process.getgid() too.
Commit ed80638 changed fs.chown() and fs.fchown() to only accept
unsigned integers. Make process.getuid() and process.getgid() follow
suit.
This commit should unbreak npm on OS X - it's hitting the new 'uid must
be an unsigned int' check when installing as e.g. user 'nobody' (which
has an UID of -2 in /etc/passwd or
4294967294 when cast to an uid_t.)
Fixes #5904.
Ben Noordhuis [Thu, 25 Jul 2013 21:21:52 +0000 (23:21 +0200)]
doc: document tls.Server 'secureProtocol' option
Timothy J Fontaine [Thu, 25 Jul 2013 20:54:55 +0000 (13:54 -0700)]
blog: Post for v0.10.14
Timothy J Fontaine [Thu, 25 Jul 2013 20:54:16 +0000 (13:54 -0700)]
Now working on 0.10.15
Timothy J Fontaine [Thu, 25 Jul 2013 20:53:45 +0000 (13:53 -0700)]
Merge branch 'v0.10.14-release' into v0.10
Timothy J Fontaine [Thu, 25 Jul 2013 18:49:01 +0000 (11:49 -0700)]
2013.07.25, Version 0.10.14 (Stable)
* uv: Upgrade to v0.10.13
* npm: Upgrade to v1.3.5
* os: Don't report negative times in cpu info (Ben Noordhuis)
* fs: Handle large UID and GID (Ben Noordhuis)
* url: Fix edge-case when protocol is non-lowercase (Shuan Wang)
* doc: Streams API Doc Rewrite (isaacs)
* node: call MakeDomainCallback in all domain cases (Trevor Norris)
* crypto: fix memory leak in LoadPKCS12 (Fedor Indutny)
Timothy J Fontaine [Thu, 25 Jul 2013 17:48:29 +0000 (10:48 -0700)]
uv: Upgrade to v0.10.13
isaacs [Wed, 24 Jul 2013 20:37:20 +0000 (13:37 -0700)]
doc: explicitly set industry logo height
isaacs [Wed, 24 Jul 2013 20:23:44 +0000 (13:23 -0700)]
npm: Upgrade to v1.3.5
Ben Noordhuis [Tue, 23 Jul 2013 15:09:09 +0000 (17:09 +0200)]
src: os: use Number::New() for CPU info
The return values from uv_cpu_info() don't necessarily fit in a 32 bits
signed integer.
Fixes #5732.
Ben Noordhuis [Tue, 23 Jul 2013 11:28:14 +0000 (13:28 +0200)]
fs: uids and gids must be unsigned ints
Before this commit, fs.chown() and fs.fchown() coerced the uid and gid
arguments to signed integers which is wrong because uid_t and gid_t are
unsigned on most all platforms and IDs that don't fit in a signed
integer do exist.
This commit changes the aforementioned functions to take unsigned ints
instead. No test because we can't assume the system has [GU]IDs that
large.
This change depends on joyent/libuv@d779eb5.
Fixes #5890.
Ben Noordhuis [Sat, 20 Jul 2013 10:34:53 +0000 (12:34 +0200)]
test: move two tests from simple/ to internet/
Fixes #5876.
Ben Noordhuis [Thu, 18 Jul 2013 18:47:56 +0000 (20:47 +0200)]
doc: events: clarify 'newListener' emitter state
Ditto for the 'removeListener' event.
Shuan Wang [Wed, 17 Jul 2013 20:10:09 +0000 (13:10 -0700)]
url: Fix edge-case when protocol is non-lowercase
When using url.parse(), path and pathname usually return '/' when there
is no path available. However when you have a protocol that contains
non-lowercase letters and the input string does not have a trailing
slash, both path and pathname will be undefined.
isaacs [Tue, 16 Jul 2013 00:48:12 +0000 (17:48 -0700)]
doc: style the 'type' fields in API docs
isaacs [Mon, 15 Jul 2013 23:56:02 +0000 (16:56 -0700)]
doc: Streams API Doc Rewrite
The Streams API doc is now broken up into 3 sections:
1. API for Consumers
2. API for Implementors
3. Details and Extras
This addresses one of the biggest points of confusion for new users who
start to consume streams, and get the impression that they have to do
lots of extra work and implement classes and such, just to get some data
out of a file.
isaacs [Mon, 15 Jul 2013 03:08:07 +0000 (20:08 -0700)]
tls: Trivial use_strict fix
Timothy J Fontaine [Sat, 13 Jul 2013 00:04:29 +0000 (17:04 -0700)]
blog: v0.11.4 is unstable not stable
Timothy J Fontaine [Fri, 12 Jul 2013 22:12:49 +0000 (15:12 -0700)]
blog: v0.11.4 release
isaacs [Fri, 12 Jul 2013 20:14:50 +0000 (13:14 -0700)]
npm: Upgrade to 1.3.4
isaacs [Fri, 12 Jul 2013 15:55:57 +0000 (08:55 -0700)]
npm: Upgrade to 1.3.3
Trevor Norris [Wed, 10 Jul 2013 17:35:57 +0000 (10:35 -0700)]
node: call MakeDomainCallback in all domain cases
Previously there was no way to pass a Function callback directly to
MakeCallback and support domains. The check has been added so that users
never have to worry about supporting domains while using MakeCallback.
Fedor Indutny [Thu, 27 Jun 2013 17:53:29 +0000 (19:53 +0200)]
crypto: fix memory leak in LoadPKCS12
X509_STORE_add_cert increment reference of passed `x509` cert,
`X509_free` must be called to avoid memory leak.
This is a back-port of commit c1db1ec from the master branch.
Ben Noordhuis [Wed, 10 Jul 2013 07:48:55 +0000 (09:48 +0200)]
test: fix up indentation, replace tabs with spaces
isaacs [Tue, 9 Jul 2013 22:58:15 +0000 (15:58 -0700)]
tools: Add next/prev version scripts
Timothy J Fontaine [Tue, 9 Jul 2013 21:29:16 +0000 (14:29 -0700)]
blog: Post for v0.10.13
Timothy J Fontaine [Tue, 9 Jul 2013 21:28:37 +0000 (14:28 -0700)]
Now working v0.10.14
Timothy J Fontaine [Tue, 9 Jul 2013 21:28:05 +0000 (14:28 -0700)]
Merge branch 'v0.10.13-release' into v0.10
Timothy J Fontaine [Tue, 9 Jul 2013 20:32:22 +0000 (13:32 -0700)]
2013.07.09, Version 0.10.13 (Stable)
* uv: Upgrade to v0.10.12
* npm: Upgrade to 1.3.2
* windows: get proper errno (Ben Noordhuis)
* tls: only wait for finish if we haven't seen it (Timothy J Fontaine)
* http: Dump response when request is aborted (isaacs)
* http: use an unref'd timer to fix delay in exit (Peter Rust)
* zlib: level can be negative (Brian White)
* zlib: allow zero values for level and strategy (Brian White)
* buffer: add comment explaining buffer alignment (Ben Noordhuis)
* string_bytes: properly detect 64bit (Timothy J Fontaine)
* src: fix memory leak in UsingDomains() (Ben Noordhuis)
Timothy J Fontaine [Tue, 9 Jul 2013 20:48:24 +0000 (13:48 -0700)]
build: use separate env vars for signing
isaacs [Tue, 9 Jul 2013 20:20:38 +0000 (13:20 -0700)]
uv: Upgrade to v0.10.12
isaacs [Tue, 9 Jul 2013 20:09:02 +0000 (13:09 -0700)]
npm: Upgrade to 1.3.2
Timothy J Fontaine [Sun, 23 Jun 2013 22:33:13 +0000 (22:33 +0000)]
tls: only wait for finish if we haven't seen it
A pooled https agent may get a Connection: close, but never finish
destroying the socket as the prior request had already emitted finish
likely from a pipe.
Since the socket is not marked as destroyed it may get reused by the
agent pool and result in an ECONNRESET.
re: #5712 #5739
Nathan Rajlich [Mon, 8 Jul 2013 18:25:40 +0000 (11:25 -0700)]
doc: fix bad markdown parsing in list
isaacs [Wed, 26 Jun 2013 16:13:48 +0000 (09:13 -0700)]
http: Dump response when request is aborted
Fixes #5695
Tim Oxley [Fri, 5 Jul 2013 03:57:13 +0000 (11:57 +0800)]
doc: remove obsolete spawn() stdio options
Ben Noordhuis [Fri, 5 Jul 2013 00:20:37 +0000 (02:20 +0200)]
src: fix memory leak in UsingDomains()
UsingDomains() assigned process_tickCallback when it had already
been set by MakeCallback() a few frames down the call stack.
Dispose the handle first or we'll retain whatever is in the lexical
closure of the old process._tickCallback function.
Fixes #5795.
Timothy J Fontaine [Mon, 1 Jul 2013 21:29:15 +0000 (21:29 +0000)]
test: fix tls-hello-parser-failure on smartos
Assert that when the client closes it has seen an error, this prevents
the test from timing out.
Also queue a second write in the case that we were able to send the
buffer before the other side closed the connection.
Peter Rust [Mon, 1 Jul 2013 22:46:49 +0000 (15:46 -0700)]
http: use an unref'd timer to fix delay in exit
There was previously up to a second exit delay when exiting node
right after an http request/response, due to the utcDate() function
doing a setTimeout to update the cached date/time.
Fixing this should increase the performance of our http tests.
Brian White [Mon, 1 Jul 2013 09:42:36 +0000 (05:42 -0400)]
zlib: level can be negative
This is a back-port of commit e945903 from the master branch.
Brian White [Mon, 1 Jul 2013 09:42:19 +0000 (05:42 -0400)]
zlib: allow zero values for level and strategy
This is a back-port of commit c9644fb from the master branch.
Ben Noordhuis [Fri, 28 Jun 2013 10:31:37 +0000 (12:31 +0200)]
doc: vm: update github issues link
Ben Noordhuis [Thu, 27 Jun 2013 01:18:41 +0000 (03:18 +0200)]
buffer: add comment explaining buffer alignment
Avoids alignment issues (unaligned loads/stores) on ARM. Originally
added in commit 285d8c6.
Fixes #3030.
isaacs [Thu, 27 Jun 2013 00:06:40 +0000 (17:06 -0700)]
blog: v0.11.3 release
Ben Noordhuis [Wed, 26 Jun 2013 23:37:29 +0000 (01:37 +0200)]
doc: tls: ECDH ciphers are not supported
Ben Noordhuis [Tue, 25 Jun 2013 10:47:24 +0000 (12:47 +0200)]
Revert "configure: fix cross-compilation host_arch_cc()"
Several people have reported cross-compiling build breakage, see e.g.
https://groups.google.com/forum/#!topic/nodejs/k8HzqpqPkJQ
Message-Id: <
823c3bd1-e104-4409-86ad-
0ab6de936fec@googlegroups.com>
Subject: [nodejs] nodejs 0.10.12 and Angstrom issues
This reverts commit
acbdabb74b1b8484671fd3c44cd9eb9a7ea11f41.
Ben Noordhuis [Mon, 24 Jun 2013 09:16:48 +0000 (11:16 +0200)]
doc: fs: synchronize watchFile/unwatchFile warning
One said "if available", the other "if possible". Now they both say
"if possible."
Timothy J Fontaine [Thu, 20 Jun 2013 00:10:02 +0000 (17:10 -0700)]
string_bytes: properly detect 64bit
Sam Roberts [Tue, 11 Jun 2013 23:49:56 +0000 (16:49 -0700)]
doc: call console module 'console' not 'stdio'
The console module has always been called 'stdio' in the
table-of-contents, but nowhere else, since its name is
'console'. This makes it difficult to find.
This is a back-port of commit 226a20d from the master branch.
isaacs [Tue, 18 Jun 2013 18:15:09 +0000 (11:15 -0700)]
blog: Release 0.10.12
isaacs [Tue, 18 Jun 2013 18:14:57 +0000 (11:14 -0700)]
Now working on 0.10.13
isaacs [Tue, 18 Jun 2013 18:13:26 +0000 (11:13 -0700)]
Merge branch 'v0.10.12-release' into v0.10
isaacs [Tue, 18 Jun 2013 16:50:53 +0000 (09:50 -0700)]
2013.06.18, Version 0.10.12 (Stable)
* npm: Upgrade to 1.2.32
* readline: make `ctrl + L` clear the screen (Yuan Chuan)
* v8: add setVariableValue debugger command (Ben Noordhuis)
* net: Do not destroy socket mid-write (isaacs)
* v8: fix build for mips32r2 architecture (Andrei Sedoi)
* configure: fix cross-compilation host_arch_cc() (Andrei Sedoi)
isaacs [Tue, 18 Jun 2013 16:42:42 +0000 (09:42 -0700)]
npm: Upgrade to 1.2.32
Yuan Chuan [Sat, 15 Jun 2013 07:48:36 +0000 (15:48 +0800)]
readline: make `ctrl + L` clear the screen
Ben Noordhuis [Mon, 3 Dec 2012 20:29:29 +0000 (20:29 +0000)]
v8: add setVariableValue debugger command
Issue 2399 part 1: In debugger allow modifying local variable values
Issue 2399 part 2: In debugger allow modifying local variable values
Review URL: https://codereview.chromium.org/
11415042
Review URL: https://codereview.chromium.org/
11412310
This is a back-port of upstream svn commits r13122 and r13202.
isaacs [Fri, 14 Jun 2013 22:57:11 +0000 (15:57 -0700)]
net: Do not destroy socket mid-write
The fix in
e0519ace315c7ce14278d5eaab8d1d72a0a0a054 is overly zealous,
and can destroy a socket while there are still outstanding writes in
progress.
Closes GH-5688
Ben Noordhuis [Sat, 15 Jun 2013 18:33:17 +0000 (20:33 +0200)]
test: add https tls session reuse test
Check that TLS session resumptions work with HTTPS servers.
Regression test for #3901.
isaacs [Fri, 14 Jun 2013 17:26:15 +0000 (10:26 -0700)]
blog: Add favicon to blog site
isaacs [Fri, 14 Jun 2013 17:25:47 +0000 (10:25 -0700)]
doc: Remove unnecessary sh script tags
Andrei Sedoi [Fri, 14 Jun 2013 14:48:49 +0000 (17:48 +0300)]
v8: fix build for mips32r2 architecture
This is a floating patch as a backport from v8 3.15.0
Committed: https://code.google.com/p/v8/source/detail?r=12833
Andrei Sedoi [Fri, 14 Jun 2013 12:49:14 +0000 (15:49 +0300)]
configure: fix cross-compilation host_arch_cc()
In case of cross-compilation host_arch_cc() function could return
target arch if CC was set to target arch compiler. Host arch
compiler should always be used in this case. This was broken
by commit 707863c.
isaacs [Thu, 13 Jun 2013 20:22:46 +0000 (13:22 -0700)]
doc: v0.8.25 changelog entry
isaacs [Thu, 13 Jun 2013 20:22:07 +0000 (13:22 -0700)]
blog: Release v0.8.25
isaacs [Thu, 13 Jun 2013 18:37:18 +0000 (11:37 -0700)]
blog: Release 0.10.11
isaacs [Thu, 13 Jun 2013 18:37:04 +0000 (11:37 -0700)]
Now working on 0.10.12
isaacs [Thu, 13 Jun 2013 18:36:41 +0000 (11:36 -0700)]
Merge branch 'v0.10.11-release' into v0.10
isaacs [Thu, 13 Jun 2013 17:35:30 +0000 (10:35 -0700)]
2013.06.13, Version 0.10.11 (Stable)
* uv: upgrade to 0.10.11
* npm: Upgrade to 1.2.30
* openssl: add missing configuration pieces for MIPS (Andrei Sedoi)
* Revert "http: remove bodyHead from 'upgrade' events" (isaacs)
* v8: fix pointer arithmetic undefined behavior (Trevor Norris)
* crypto: fix utf8/utf-8 encoding check (Ben Noordhuis)
* net: Fix busy loop on POLLERR|POLLHUP on older linux kernels (Ben Noordhuis, isaacs)
Veres Lajos [Wed, 12 Jun 2013 22:51:17 +0000 (23:51 +0100)]
test: minor typo fixes
Andrei Sedoi [Wed, 12 Jun 2013 15:47:10 +0000 (18:47 +0300)]
openssl: add missing configuration pieces for MIPS
isaacs [Thu, 13 Jun 2013 00:45:30 +0000 (17:45 -0700)]
Revert "http: remove bodyHead from 'upgrade' events"
This reverts commit
a40133d10cdb911b27fe8d46d67a835b0103bbf1.
Unfortunately, this breaks socket.io. Even though it's not strictly an
API change, it is too subtle and in too brittle an area of node, to be
done in a stable branch.
Conflicts:
doc/api/http.markdown
Ben Noordhuis [Wed, 12 Jun 2013 20:10:39 +0000 (22:10 +0200)]
uv: upgrade to 0.10.11
isaacs [Wed, 12 Jun 2013 17:59:44 +0000 (10:59 -0700)]
npm: Upgrade to 1.2.30
Trevor Norris [Tue, 11 Jun 2013 21:39:25 +0000 (14:39 -0700)]
v8: fix pointer arithmetic undefined behavior
Clang branch release_33 would optimize out a != NULL check because of
some undefined behavior. This is a floating patch as a backport of that
fix.
Committed: http://code.google.com/p/v8/source/detail?r=13570
Ben Noordhuis [Mon, 10 Jun 2013 21:34:11 +0000 (23:34 +0200)]
crypto: fix utf8/utf-8 encoding check
Normalize the encoding in getEncoding() before using it. Fixes a
"AssertionError: Cannot change encoding" exception when the caller
mixes "utf8" and "utf-8".
Fixes #5655.
Timothy J Fontaine [Tue, 4 Jun 2013 00:05:56 +0000 (17:05 -0700)]
build: add pkgsrc rule
isaacs [Thu, 6 Jun 2013 21:44:48 +0000 (14:44 -0700)]
npm: Upgrade to 1.2.27
isaacs [Wed, 5 Jun 2013 06:43:29 +0000 (23:43 -0700)]
net: Destroy when not readable and not writable
This is only relevant for CentOS 6.3 using kernel version 2.6.32.
On other linuxes and darwin, the `read` call gets an ECONNRESET in that
case. On sunos, the `write` call fails with EPIPE.
However, old CentOS will occasionally send an EOF instead of a
ECONNRESET or EPIPE when the client has been destroyed abruptly.
Make sure we don't keep trying to write or read more in that case.
Fixes #5504
However, there is still the question of what libuv should do when it
gets an EOF. Apparently in this case, it will continue trying to read,
which is almost certainly the wrong thing to do.
That should be fixed in libuv, even though this works around the issue.