Robert Nagy
58e645de63
stream: remove thenable support
...
Remove support for returning thenables in stream
implementation methods. This is causing more confusion
and issues than it's worth.
Refs: https://github.com/nodejs/node/issues/39535
PR-URL: https://github.com/nodejs/node/pull/40773
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com >
2022-04-08 11:29:24 +01:00
Robert Nagy
1b47866a1d
stream: allow returning null from pipeline tail
...
PR-URL: https://github.com/nodejs/node/pull/42078
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
2022-02-25 13:31:20 +00:00
Robert Nagy
224b78ff06
stream: resume stream on drain
...
Previously we would just resume "flowing" the stream without
reseting the "paused" state. Fixes this by properly using
pause/resume methods for .pipe.
Fixes: https://github.com/nodejs/node/issues/41785
PR-URL: https://github.com/nodejs/node/pull/41848
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2022-02-06 10:05:51 +00:00
Robert Nagy
48e784043d
stream: don't emit finish after destroy
...
PR-URL: https://github.com/nodejs/node/pull/40852
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2022-01-03 16:32:44 +01:00
Robert Nagy
a698c49993
stream: add isReadable helper
...
PR-URL: https://github.com/nodejs/node/pull/41199
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2021-12-29 20:42:10 +01:00
Robert Nagy
752d75d8bc
stream: add isErrored helper
...
Refs: https://github.com/nodejs/undici/pull/1134
PR-URL: https://github.com/nodejs/node/pull/41121
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Minwoo Jung <nodecorelab@gmail.com >
2021-12-16 14:28:31 +01:00
Robert Nagy
1fa507f098
stream: allow readable to end early without error
...
PR-URL: https://github.com/nodejs/node/pull/40881
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
2021-12-06 20:42:12 +01:00
Robert Nagy
40a52bde95
stream: cleanup eos
...
PR-URL: https://github.com/nodejs/node/pull/40998
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2021-12-01 01:50:24 +00:00
Robert Nagy
37f1dd9ccd
stream: drain Transform with 0 highWaterMark
...
Fixes: https://github.com/nodejs/node/issues/40935
PR-URL: https://github.com/nodejs/node/pull/40947
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: Tobias Nießen <tniessen@tnie.de >
2021-11-27 18:09:41 +01:00
Robert Nagy
49b8c4f08b
stream: stricter isReadableNodeStream
...
Fixes: https://github.com/nodejs/node/issues/40938
PR-URL: https://github.com/nodejs/node/pull/40941
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2021-11-26 17:33:05 +00:00
Robert Nagy
8ee4e672ec
stream: pipeline with end option
...
Currently pipeline cannot fully replace pipe due
to the missing end option. This PR adds the end
option to the promisified pipeline method.
PR-URL: https://github.com/nodejs/node/pull/40886
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2021-11-22 10:52:23 +01:00
Robert Nagy
340b770d3f
stream: unify writableErrored and readableErrored
...
Both of these should always refer to the same error, hence
there is no reason to separate them.
PR-URL: https://github.com/nodejs/node/pull/40799
Refs: https://github.com/nodejs/node/pull/40696
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2021-11-18 14:31:43 +01:00
Robert Nagy
0a3a60130c
stream: pipeline should drain empty readable
...
This simplifies some cases where the last stream is a Duplex
without any expected output.
await pipeline(readable, duplex)
PR-URL: https://github.com/nodejs/node/pull/40654
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
2021-11-18 11:02:00 +01:00
Robert Nagy
415726b8c4
stream: add writableAborted
...
PR-URL: https://github.com/nodejs/node/pull/40802
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
2021-11-18 07:40:13 +01:00
Robert Nagy
640bfb8d70
stream: fix non readable Duplex readableAborted
...
PR-URL: https://github.com/nodejs/node/pull/40801
Fixes: https://github.com/nodejs/node/issues/40800
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
2021-11-15 14:45:46 +02:00
Robert Nagy
afe460ec9e
stream: allow calling callback before promise
...
Refs: https://github.com/nodejs/node/issues/39535
PR-URL: https://github.com/nodejs/node/pull/40772
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2021-11-14 15:52:22 +02:00
Robert Nagy
f2170253b6
stream: add errored and closed props
...
PR-URL: https://github.com/nodejs/node/pull/40696
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2021-11-13 11:19:32 +02:00
Robert Nagy
3b9044b5b2
http: response should always emit 'close'
...
Fixes: https://github.com/nodejs/node/issues/40528
PR-URL: https://github.com/nodejs/node/pull/40543
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Colin Ihrig <cjihrig@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
2021-10-25 07:35:24 +00:00
Robert Nagy
47fb8676ff
stream: remove no longer necessary ComposeDuplex
...
PR-URL: https://github.com/nodejs/node/pull/40545
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Tobias Nießen <tniessen@tnie.de >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
2021-10-23 22:23:35 +00:00
Robert Nagy
0f78d2600b
stream: fix fromAsyncGen
...
Fixes: https://github.com/nodejs/node/issues/40497
PR-URL: https://github.com/nodejs/node/pull/40499
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
2021-10-19 13:55:06 +00:00
Robert Nagy
c04d621ecc
stream: add signal support to pipeline generators
...
Generators in pipeline must be able to be aborted or pipeline
can deadlock.
PR-URL: https://github.com/nodejs/node/pull/39067
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2021-08-25 17:44:28 +02:00
Robert Nagy
82ae00cae4
util: expose toUSVString
...
Expose toUSVString so it can be used by user libraries.
PR-URL: https://github.com/nodejs/node/pull/39814
Refs: https://github.com/nodejs/undici/pull/986
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
2021-08-22 07:08:00 +02:00
Robert Nagy
4832d1c02c
stream: add isDisturbed helper
...
Adds a helper util used to determine whether a stream has been
disturbed (read or cancelled).
Refs: https://github.com/nodejs/node/issues/39627
PR-URL: https://github.com/nodejs/node/pull/39628
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
2021-08-06 07:45:38 +02:00
Robert Nagy
0e841b45c2
stream: don't emit 'data' after 'error' or 'close'
...
As per doc we should not emit further events after 'close' and
only 'close' after 'error'.
Fixes: https://github.com/nodejs/node/issues/39630
PR-URL: https://github.com/nodejs/node/pull/39639
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com >
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de >
2021-08-06 07:44:09 +02:00
Robert Nagy
533cafcf7e
stream: duplexify
...
PR-URL: https://github.com/nodejs/node/pull/39519
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
2021-08-03 10:47:10 +02:00
Robert Nagy
ac621ff5e7
stream: add readableDidRead if has been read from
...
Adds did read accessor used to determine whether a readable has been
read from.
PR-URL: https://github.com/nodejs/node/pull/39589
Refs: https://github.com/nodejs/undici/pull/907
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
2021-08-02 05:59:18 -07:00
Robert Nagy
3f0b62375b
stream: convert premature close to AbortError
...
AbortError is a more "web" align alternative to
ERR_STREAM_PREMATURE_CLOSE.
PR-URL: https://github.com/nodejs/node/pull/39524
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2021-07-28 10:12:04 +02:00
Robert Nagy
ab03ab4ca9
stream: mark compose as experimental
...
PR-URL: https://github.com/nodejs/node/pull/39494
Reviewed-By: Michaël Zasso <targos@protonmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2021-07-25 19:33:41 +02:00
Robert Nagy
79f4d5a345
stream: fix toWeb typo
...
PR-URL: https://github.com/nodejs/node/pull/39496
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: Tobias Nießen <tniessen@tnie.de >
2021-07-25 19:32:51 +02:00
Robert Nagy
48ff0a18e8
stream: compose with async functions
...
Enables async function support for stream.compose.
PR-URL: https://github.com/nodejs/node/pull/39435
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2021-07-21 13:53:17 +02:00
Robert Nagy
e579acb8dc
stream: add stream.compose
...
Refs: #32020
PR-URL: https://github.com/nodejs/node/pull/39029
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Michaël Zasso <targos@protonmail.com >
2021-07-19 08:14:32 +02:00
Robert Nagy
efd40eadab
stream: forward errored to callback
...
Refs: https://github.com/nodejs/node/issues/39356
PR-URL: https://github.com/nodejs/node/pull/39364
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
2021-07-14 13:05:10 +02:00
Robert Nagy
8306051001
stream: add readableDidRead
...
Adds readableDidRead to streams and applies usage to http, http2 and quic.
PR-URL: https://github.com/nodejs/node/pull/36820
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
2021-07-14 12:01:41 +02:00
Robert Nagy
09d8c0c8d2
stream: destroy readable on read error
...
PR-URL: https://github.com/nodejs/node/pull/39342
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
2021-07-12 12:08:43 +02:00
Robert Nagy
a5dec3a470
stream: validate abort signal
...
PR-URL: https://github.com/nodejs/node/pull/39346
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Michaël Zasso <targos@protonmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
2021-07-12 12:06:57 +02:00
Robert Nagy
70acf03c73
meta: fix tls code owners
...
PR-URL: https://github.com/nodejs/node/pull/39355
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Rich Trott <rtrott@gmail.com >
2021-07-11 15:07:30 -07:00
Robert Nagy
f2f6872b5c
stream: cleanup async handling
...
Cleanup async stream method handling.
PR-URL: https://github.com/nodejs/node/pull/39329
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2021-07-11 19:20:01 +02:00
Robert Nagy
7a7ba82234
stream: don't emit prefinish after error or close
...
PR-URL: https://github.com/nodejs/node/pull/39332
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2021-07-11 18:41:17 +02:00
Robert Nagy
5960f16713
tls: move legacy code into own file
...
PR-URL: https://github.com/nodejs/node/pull/39333
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com >
2021-07-11 18:40:18 +02:00
Robert Nagy
bb275ef2a4
stream: unify stream utils
...
Unify stream helps into utils.
PR-URL: https://github.com/nodejs/node/pull/39294
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2021-07-11 10:40:30 +02:00
Robert Nagy
ce00381751
stream: use finished for async iteration
...
PR-URL: https://github.com/nodejs/node/pull/39282
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2021-07-08 08:10:37 +02:00
Robert Nagy
a8a86387fa
tty: enable buffering
...
HWM was set to 0 which would cause e.g. stdout.write(...) to
always return false.
Refs: https://github.com/nodejs/node/pull/39246
PR-URL: https://github.com/nodejs/node/pull/39253
Reviewed-By: Anna Henningsen <anna@addaleax.net >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
2021-07-07 14:50:47 +02:00
Robert Nagy
0738a2b7bd
stream: finished should error on errored stream
...
Calling finished before or after a stream has errored or closed
should end up with the same behavior.
PR-URL: https://github.com/nodejs/node/pull/39235
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Rich Trott <rtrott@gmail.com >
2021-07-04 20:52:39 -07:00
Robert Nagy
954217adda
stream: error Duplex write/read if not writable/readable
...
If writable/readable has been explicitly disabled then using
a Duplex as writable/readable should fail.
Fixes: https://github.com/nodejs/node/issues/34374
PR-URL: https://github.com/nodejs/node/pull/34385
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: Anna Henningsen <anna@addaleax.net >
2021-07-02 22:11:16 +02:00
Robert Nagy
320339630d
stream: use finished for pump
...
Re-use existing compat logic for pump by using
finished.
PR-URL: https://github.com/nodejs/node/pull/39203
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
2021-07-02 10:12:45 +02:00
Robert Nagy
f4609bdf3f
stream: bypass legacy destroy for pipeline and async iteration
...
PR-URL: https://github.com/nodejs/node/pull/38505
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2021-06-15 19:43:49 +02:00
Robert Nagy
bdcb7389ed
stream: fix pipeline pump
...
Refs: https://github.com/nodejs/node/issues/39005
PR-URL: https://github.com/nodejs/node/pull/39006
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2021-06-14 08:13:12 -07:00
Robert Nagy
369f239503
stream: fix multiple Writable.destroy() calls
...
Calling Writable.destroy() multiple times in the same tick
could cause an assertion error.
Fixes: https://github.com/nodejs/node/issues/38189
PR-URL: https://github.com/nodejs/node/pull/38221
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Nitzan Uziely <linkgoron@gmail.com >
Reviewed-By: Rich Trott <rtrott@gmail.com >
2021-04-16 12:00:19 +02:00
Robert Nagy
e2f5bb7574
http: align with stream.Writable
...
Futher aligns OutgoingMessage with stream.Writable. In particular
re-uses the construct/destroy logic from streams.
Due to a lot of subtle assumptions this PR unfortunately touches
a lot of different parts.
PR-URL: https://github.com/nodejs/node/pull/36816
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
2021-03-10 15:04:00 +01:00
Robert Nagy
fe43bd8ddd
http: fix ClientRequest unhandled errors
...
ClientRequest could someone cause an unhandled error
from socket.
Fixes: https://github.com/nodejs/node/issues/36931
PR-URL: https://github.com/nodejs/node/pull/36970
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
2021-02-03 23:05:34 +01:00
Robert Nagy
708728ddcc
http: abortIncoming only on socket close
...
Don't call abortIncombin twice for same socket, i.e. both during
'end' and 'close'.
PR-URL: https://github.com/nodejs/node/pull/36821
Reviewed-By: James M Snell <jasnell@gmail.com >
2021-01-18 14:01:16 -08:00
Robert Nagy
e39a3f86bf
http: refactor ClientRequest destroy
...
PR-URL: https://github.com/nodejs/node/pull/36863
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
2021-01-16 17:07:35 +01:00
Robert Nagy
963dec304d
http: cleanup ClientRequest oncreate
...
PR-URL: https://github.com/nodejs/node/pull/36862
Reviewed-By: Rich Trott <rtrott@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Daniele Belardi <dwon.dnl@gmail.com >
2021-01-16 16:32:13 +01:00
Robert Nagy
1b669b2c12
http: don't cork noop .end()
...
Calling .end() a second time should be a noop and not
leave the socket corked.
Fixes: https://github.com/nodejs/node/issues/36620
PR-URL: https://github.com/nodejs/node/pull/36633
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: Danielle Adams <adamzdanielle@gmail.com >
2021-01-12 11:00:02 +01:00
Robert Nagy
52546c091d
stream: finished waits for 'close' on OutgoingMessage
...
Don't invoke finished callback until OutgoingMessagehas
emitted 'close'.
PR-URL: https://github.com/nodejs/node/pull/36648
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2021-01-11 11:39:33 -08:00
Robert Nagy
a4fce32eab
stream: fix .end() error propagation
...
PR-URL: https://github.com/nodejs/node/pull/36817
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
2021-01-11 17:57:05 +01:00
Robert Nagy
2da36112d1
net: add support for finished after .destroy()
...
Calling `finished(socket, cb)` would previously not
invoked the callback if the socket was already detroyed.
PR-URL: https://github.com/nodejs/node/pull/36635
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: Rich Trott <rtrott@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2021-01-04 13:17:19 -08:00
Robert Nagy
faee7399b2
stream: only use legacy close listeners if not willEmitClose
...
Some streams that willEmitClose unecessarily fallback to legacy
events.
PR-URL: https://github.com/nodejs/node/pull/36649
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: Rich Trott <rtrott@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
2020-12-30 15:28:32 +00:00
Robert Nagy
ab895bd587
stream: fix pipe deadlock when starting with needDrain
...
Fixes: https://github.com/nodejs/node/issues/36544
PR-URL: https://github.com/nodejs/node/pull/36563
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
2020-12-20 10:27:35 +01:00
Robert Nagy
f7f0a6aa5d
net: fix invalid write after end error
...
Don't error if not ended.
Fixes: https://github.com/nodejs/node/issues/36029
PR-URL: https://github.com/nodejs/node/pull/36043
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
2020-11-11 00:27:13 +01:00
Robert Nagy
dd0f8f18c2
stream: writableNeedDrain
...
Don't write to a stream which already has a full buffer.
Fixes: https://github.com/nodejs/node/issues/35341
PR-URL: https://github.com/nodejs/node/pull/35348
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
2020-11-10 10:44:16 +01:00
Robert Nagy
0d474327a2
http: lazy create IncomingMessage.headers
...
When rawHeaders is enough don't create the headers object.
PR-URL: https://github.com/nodejs/node/pull/35281
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2020-10-27 09:29:32 +01:00
Robert Nagy
1d8ecd8cfe
stream: async iterator stop read if destroyed
...
Fixes some compatibility issues where it is expected
that for await stops reading when the stream is
destroyed.
Refs: https://github.com/nodejs/node/pull/34887
PR-URL: https://github.com/nodejs/node/pull/35640
Reviewed-By: Rich Trott <rtrott@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2020-10-15 15:46:40 -04:00
Robert Nagy
d70c0ed250
http: allow passing array of key/val into writeHead
...
Enables an optimization when the user already has the headers
in an array form, e.g. when proxying.
PR-URL: https://github.com/nodejs/node/pull/35274
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: Rich Trott <rtrott@gmail.com >
2020-10-10 10:11:41 +02:00
Robert Nagy
6be80e1893
stream: fix legacy pipe error handling
...
Fixes: https://github.com/nodejs/node/issues/35237
PR-URL: https://github.com/nodejs/node/pull/35257
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Rich Trott <rtrott@gmail.com >
2020-09-23 04:33:05 -07:00
Robert Nagy
2b9003b165
stream: don't destroy on async iterator success
...
Destroying on async iterator completion ignores autoDestroy.
PR-URL: https://github.com/nodejs/node/pull/35122
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Anna Henningsen <anna@addaleax.net >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2020-09-21 21:38:49 +00:00
Robert Nagy
5461794b12
https: set requestTimeout default to 0
...
Fixes: https://github.com/nodejs/node/issues/35261
PR-URL: https://github.com/nodejs/node/pull/35264
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Richard Lau <riclau@uk.ibm.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Beth Griggs <Bethany.Griggs@uk.ibm.com >
Reviewed-By: Rich Trott <rtrott@gmail.com >
2020-09-21 08:32:26 -07:00
Robert Nagy
e0d3b758a0
stream: improve Writable.destroy performance
...
Avoid nextTick if there are no pending callbacks.
PR-URL: https://github.com/nodejs/node/pull/35067
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Anna Henningsen <anna@addaleax.net >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Ricky Zhou <0x19951125@gmail.com >
2020-09-07 09:54:33 -07:00
Robert Nagy
a0f87aab10
fs: guard against undefined behavior
...
Calling close on a file description which is currently in use is
undefined behavior due to implementation details in libuv. Add
a guard against this when using FileHandle.
PR-URL: https://github.com/nodejs/node/pull/34746
Reviewed-By: Anna Henningsen <anna@addaleax.net >
Reviewed-By: David Carlier <devnexen@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2020-08-14 10:22:43 +02:00
Robert Nagy
8d8090b9bb
test: fix flaky http-parser-timeout-reset
...
Refs: https://github.com/nodejs/node/pull/34578#issuecomment-667941698
PR-URL: https://github.com/nodejs/node/pull/34609
Reviewed-By: Richard Lau <riclau@uk.ibm.com >
Reviewed-By: Myles Borins <myles.borins@gmail.com >
2020-08-03 13:47:33 -04:00
Robert Nagy
da4d8de9d0
http: reset headers timeout on headers complete
...
headers timeout should not occur *after* headers have been
received.
Fixes: https://github.com/nodejs/node/issues/34576
PR-URL: https://github.com/nodejs/node/pull/34578
Reviewed-By: Anna Henningsen <anna@addaleax.net >
Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Pranshu Srivastava <rexagod@gmail.com >
2020-08-02 09:35:18 +02:00
Robert Nagy
849d9e7b90
http: provide keep-alive timeout response header
...
In http 1.1 persistent connection protocol there is a
timing race where the client sends the request and then
the server kills the connection (due to inactivity)
before receiving the client's request.
By providing a keep-alive header it is possible to provide
the client a hint of when idle timeout would occur and
avoid the race.
Fixes: https://github.com/nodejs/node/issues/34560
PR-URL: https://github.com/nodejs/node/pull/34561
Reviewed-By: Anna Henningsen <anna@addaleax.net >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Zeyu Yang <himself65@outlook.com >
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com >
Reviewed-By: Pranshu Srivastava <rexagod@gmail.com >
2020-08-01 15:04:35 +02:00
Robert Nagy
e8d7fedf7c
http: don't write error to socket
...
The state of the connection is unknown at this point and
writing to it can corrupt client state before it is aware
of an error.
PR-URL: https://github.com/nodejs/node/pull/34465
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2020-07-25 09:59:41 +02:00
Robert Nagy
02c4869bee
stream: fix Duplex._construct race
...
Ensures that _construct has finished before invoking
_destroy.
The 'constructed' property was not properly set to false
for both writable and readable state.
Fixes: https://github.com/nodejs/node/issues/34448
PR-URL: https://github.com/nodejs/node/pull/34456
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
2020-07-21 11:00:39 -07:00
Robert Nagy
08e8997d54
stream: simpler and faster Readable async iterator
...
Reimplement as an async generator instead of a custom
iterator class.
PR-URL: https://github.com/nodejs/node/pull/34035
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2020-07-17 09:06:27 +02:00
Robert Nagy
a55b77d2d3
stream: finished on closed OutgoingMessage
...
finished should invoke callback on closed OutgoingMessage the
same way as for regular streams.
Fixes: https://github.com/nodejs/node/issues/34301
PR-URL: https://github.com/nodejs/node/pull/34313
Fixes: https://github.com/nodejs/node/issues/34274
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
2020-07-16 08:37:01 +02:00
Robert Nagy
a65218f5e8
stream: try to wait for flush to complete before 'finish'
...
Due to compat reasons Transform streams don't always wait
for flush to complete before finishing the stream.
Try to wait when possible, i.e. when the user does not
override _final.
Fixes: https://github.com/nodejs/node/issues/34274
PR-URL: https://github.com/nodejs/node/pull/34314
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Anna Henningsen <anna@addaleax.net >
Reviewed-By: Zeyu Yang <himself65@outlook.com >
2020-07-15 21:23:10 +02:00
Robert Nagy
4e3f6f355b
stream: cleanup and fix Readable.wrap
...
Cleans up Readable.wrap and also ensures destroy
is called for certain events.
PR-URL: https://github.com/nodejs/node/pull/34204
Reviewed-By: Anna Henningsen <anna@addaleax.net >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2020-07-11 22:41:18 +02:00
Robert Nagy
e8f57456be
http: add note about timer unref
...
PR-URL: https://github.com/nodejs/node/pull/34143
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com >
2020-07-09 09:14:12 +02:00
Robert Nagy
6213fcee9b
stream: save error in state
...
Useful for future PR's to resolve situations where e.g. finished()
is invoked on an already errored streams.
PR-URL: https://github.com/nodejs/node/pull/34103
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Denys Otrishko <shishugi@gmail.com >
Reviewed-By: Anna Henningsen <anna@addaleax.net >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
2020-07-01 18:22:56 +02:00
Robert Nagy
60a217b1ea
tls: remove unnecessary close listener
...
Wrapped streams are expected to behave the same as socket with handle.
Remove unnecessary difference in handling.
PR-URL: https://github.com/nodejs/node/pull/34105
Reviewed-By: Anna Henningsen <anna@addaleax.net >
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com >
2020-07-01 18:18:59 +02:00
Robert Nagy
c7e55c6b72
stream: fix writable.end callback behavior
...
Changes so that the end() callback behaves the same way in relation
to _final as write() does to _write/_writev.
PR-URL: https://github.com/nodejs/node/pull/34101
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Anna Henningsen <anna@addaleax.net >
2020-07-01 18:18:04 +02:00
Robert Nagy
0edeeec3ec
net: doc deprecate bufferSize
...
PR-URL: https://github.com/nodejs/node/pull/34088
Refs: https://github.com/nodejs/node/issues/34078
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Anna Henningsen <anna@addaleax.net >
2020-06-30 22:36:51 +02:00
Robert Nagy
312a4f3255
net: fix bufferSize
...
bufferSize should only look at writableLength otherwise it will
always show more than what is actually pending.
PR-URL: https://github.com/nodejs/node/pull/34088
Refs: https://github.com/nodejs/node/issues/34078
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Anna Henningsen <anna@addaleax.net >
2020-06-30 22:36:50 +02:00
Robert Nagy
8f4b4f272e
stream: destroy wrapped streams on error
...
Stream should be destroyed and update state accordingly when
the wrapped stream emits error.
Does some additional cleanup with future TODOs that might be worth
looking into.
PR-URL: https://github.com/nodejs/node/pull/34102
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Anna Henningsen <anna@addaleax.net >
2020-06-30 22:35:36 +02:00
Robert Nagy
2ccf15b2bf
test: ensure finish is emitted before destroy
...
Adds a test to ensure that 'finish' is emitted
before the socket is destroyed by allow half-open
enforcer.
Refs: https://github.com/nodejs/node/commit/3c07b1793cfe12a7cebc3a0e3e3c3fd2b60a3560#commitcomment-38810268
PR-URL: https://github.com/nodejs/node/pull/33137
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
2020-06-25 01:11:14 +02:00
Robert Nagy
db0e991d52
fs: remove custom Buffer pool for streams
...
The performance benefit of using a custom pool are negligable.
Furthermore, it causes problems with Workers and transferrable.
Rather than further adding complexity for compat with Workers,
just remove the pooling logic.
Refs: https://github.com/nodejs/node/issues/33880#issuecomment-644430693
Fixes: https://github.com/nodejs/node/issues/31733
PR-URL: https://github.com/nodejs/node/pull/33981
Reviewed-By: Anna Henningsen <anna@addaleax.net >
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl >
2020-06-23 13:27:01 +02:00
Robert Nagy
51a2df4439
fs: document why isPerformingIO is required
...
PR-URL: https://github.com/nodejs/node/pull/33982
Reviewed-By: Anna Henningsen <anna@addaleax.net >
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com >
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
2020-06-21 17:23:20 +02:00
Robert Nagy
30cc54275d
http: don't emit error after close
...
Refs: https://github.com/nodejs/node/issues/33591
PR-URL: https://github.com/nodejs/node/pull/33654
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
2020-06-21 17:21:12 +02:00
Robert Nagy
16116f5f5f
quic: remove noop code
...
this.unidirectional depends on #id which is never set
in the constructor, hence this condition will never run
and can be removed.
PR-URL: https://github.com/nodejs/node/pull/33914
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com >
2020-06-18 14:44:29 -07:00
Robert Nagy
b0b268f5a2
test: fix flaky fs-construct test
...
Fixes: https://github.com/nodejs/node/issues/33607
PR-URL: https://github.com/nodejs/node/pull/33625
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
Reviewed-By: Richard Lau <riclau@uk.ibm.com >
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de >
Reviewed-By: Anna Henningsen <anna@addaleax.net >
2020-05-30 04:40:17 +02:00
Robert Nagy
54b36e401d
fs: reimplement read and write streams using stream.construct
...
Refs: #23133
PR-URL: https://github.com/nodejs/node/pull/29656
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Anna Henningsen <anna@addaleax.net >
Reviewed-By: Denys Otrishko <shishugi@gmail.com >
2020-05-27 10:24:33 +02:00
Robert Nagy
fb8cc72e73
stream: construct
...
Provide a standardized way of asynchronously creating and
initializing resources before performing any work.
Refs: https://github.com/nodejs/node/issues/29314
PR-URL: https://github.com/nodejs/node/pull/29656
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Anna Henningsen <anna@addaleax.net >
Reviewed-By: Denys Otrishko <shishugi@gmail.com >
2020-05-27 10:24:05 +02:00
Robert Nagy
9949a2e1e3
test: make flaky test stricter
...
Make assertions in flaky test stricter to possibly
make it easier to determine the root cause.
Refs: https://github.com/nodejs/node/issues/4066
PR-URL: https://github.com/nodejs/node/pull/33539
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
2020-05-26 16:08:58 +02:00
Robert Nagy
2361b5c041
stream: forward writableObjectMode
...
Duplex did not properly forward writableObjectMode.
Fixes: https://github.com/nodejs/node/issues/33388
PR-URL: https://github.com/nodejs/node/pull/33390
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Anna Henningsen <anna@addaleax.net >
2020-05-19 00:02:32 +02:00
Robert Nagy
b04e88439a
http: don't destroy completed request
...
Calling destroy() on a completed ClientRequest, i.e.
once 'close' will be emitted should be a noop. Also
before emitting 'close' destroyed === true.
Fixes: https://github.com/nodejs/node/issues/32851
PR-URL: https://github.com/nodejs/node/pull/33120
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com >
2020-05-11 18:02:32 +02:00
Robert Nagy
8a6fab02ad
http: emit 'error' on aborted server request
...
Server requests aka. IncomingMessage emits 'aborted'
instead of 'error' which causes confusion when
the object is used as a regular stream, i.e. if
functions working on streams are passed a
server request object they might not work properly
unless they take this into account.
Refs: https://github.com/nodejs/web-server-frameworks/issues/41
PR-URL: https://github.com/nodejs/node/pull/33172
Fixes: https://github.com/nodejs/node/issues/28172
Refs: https://github.com/nodejs/node/pull/28677
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Rich Trott <rtrott@gmail.com >
Reviewed-By: Anna Henningsen <anna@addaleax.net >
2020-05-10 22:11:21 +02:00
Robert Nagy
28e6626ce7
http: set IncomingMessage.destroyed
...
IncomingMessage is a Readable stream and should properly
set the destroyed property.
PR-URL: https://github.com/nodejs/node/pull/33131
Reviewed-By: Anna Henningsen <anna@addaleax.net >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com >
2020-05-09 07:57:45 +02:00
Robert Nagy
d005f490a8
http: cleanup end argument handling
...
PR-URL: https://github.com/nodejs/node/pull/31818
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Anna Henningsen <anna@addaleax.net >
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de >
2020-05-08 19:57:58 +02:00
Robert Nagy
e50ae7a259
doc: add warning for socket.connect reuse
...
PR-URL: https://github.com/nodejs/node/pull/33204
Refs: https://github.com/nodejs/node/issues/25969
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Anna Henningsen <anna@addaleax.net >
2020-05-08 18:03:26 +02:00