stream,net: slightly more consistent typechecking#17644
Closed
addaleax wants to merge 2 commits intonodejs:masterfrom
Closed
stream,net: slightly more consistent typechecking#17644addaleax wants to merge 2 commits intonodejs:masterfrom
addaleax wants to merge 2 commits intonodejs:masterfrom
Conversation
`validChunk` allowed `undefined` as a chunk in object mode; however,
this was redundant, since:
- `validChunk()` is only used by `.write()`
- If the `validChunk()` check passes for `undefined`, `.write()`
calls `writeOrBuffer()`
- If `writeOrBuffer()` does not receive a Buffer, it calls
`decodeChunk()`
- `decodeChunk()` ignores `undefined` because it checks
`typeof chunk === 'string'`
- After that call, `chunk.length` is accessed, which throws an
error if `chunk` is undefined`.
This “fixes” a bug in the sense that `state.pendingcb` is no longer
incremented for write attempts that fail like this.
This is superfluous now that typechecking in `net` and `stream` are aligned.
Member
Author
|
CI: https://ci.nodejs.org/job/node-test-commit/14790/ I would consider this semver-patch – it essentially turns a |
BridgeAR
approved these changes
Dec 13, 2017
Member
BridgeAR
left a comment
There was a problem hiding this comment.
LGTM but adding a test would be good.
cjihrig
approved these changes
Dec 13, 2017
Member
|
+1 on semver-patch by the way. |
Member
Author
|
@BridgeAR There are tests that cover the typechecking for |
lpinca
approved these changes
Dec 13, 2017
apapirovski
approved these changes
Dec 13, 2017
jasnell
approved these changes
Dec 13, 2017
maclover7
approved these changes
Dec 13, 2017
Member
BridgeAR
pushed a commit
to BridgeAR/node
that referenced
this pull request
Dec 15, 2017
`validChunk` allowed `undefined` as a chunk in object mode; however,
this was redundant, since:
- `validChunk()` is only used by `.write()`
- If the `validChunk()` check passes for `undefined`, `.write()`
calls `writeOrBuffer()`
- If `writeOrBuffer()` does not receive a Buffer, it calls
`decodeChunk()`
- `decodeChunk()` ignores `undefined` because it checks
`typeof chunk === 'string'`
- After that call, `chunk.length` is accessed, which throws an
error if `chunk` is undefined`.
This “fixes” a bug in the sense that `state.pendingcb` is no longer
incremented for write attempts that fail like this.
PR-URL: nodejs#17644
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Jon Moss <me@jonathanmoss.me>
BridgeAR
pushed a commit
to BridgeAR/node
that referenced
this pull request
Dec 15, 2017
This is superfluous now that typechecking in `net` and `stream` are aligned. PR-URL: nodejs#17644 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Jon Moss <me@jonathanmoss.me>
MylesBorins
pushed a commit
that referenced
this pull request
Jan 8, 2018
`validChunk` allowed `undefined` as a chunk in object mode; however,
this was redundant, since:
- `validChunk()` is only used by `.write()`
- If the `validChunk()` check passes for `undefined`, `.write()`
calls `writeOrBuffer()`
- If `writeOrBuffer()` does not receive a Buffer, it calls
`decodeChunk()`
- `decodeChunk()` ignores `undefined` because it checks
`typeof chunk === 'string'`
- After that call, `chunk.length` is accessed, which throws an
error if `chunk` is undefined`.
This “fixes” a bug in the sense that `state.pendingcb` is no longer
incremented for write attempts that fail like this.
PR-URL: #17644
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Jon Moss <me@jonathanmoss.me>
MylesBorins
pushed a commit
that referenced
this pull request
Jan 8, 2018
This is superfluous now that typechecking in `net` and `stream` are aligned. PR-URL: #17644 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Jon Moss <me@jonathanmoss.me>
MylesBorins
pushed a commit
that referenced
this pull request
Jan 9, 2018
`validChunk` allowed `undefined` as a chunk in object mode; however,
this was redundant, since:
- `validChunk()` is only used by `.write()`
- If the `validChunk()` check passes for `undefined`, `.write()`
calls `writeOrBuffer()`
- If `writeOrBuffer()` does not receive a Buffer, it calls
`decodeChunk()`
- `decodeChunk()` ignores `undefined` because it checks
`typeof chunk === 'string'`
- After that call, `chunk.length` is accessed, which throws an
error if `chunk` is undefined`.
This “fixes” a bug in the sense that `state.pendingcb` is no longer
incremented for write attempts that fail like this.
PR-URL: #17644
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Jon Moss <me@jonathanmoss.me>
MylesBorins
pushed a commit
that referenced
this pull request
Jan 9, 2018
This is superfluous now that typechecking in `net` and `stream` are aligned. PR-URL: #17644 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Jon Moss <me@jonathanmoss.me>
Merged
MylesBorins
added a commit
that referenced
this pull request
Jan 10, 2018
Notable change:
* async_hooks:
- deprecate AsyncHooks Sensitive API and runInAsyncIdScope. Neither
API were documented. (Andreas Madsen)
#16972
* deps:
- update nghttp2 to 1.29.0 (James M Snell)
#17908
- upgrade npm to 5.6.0 (Kat Marchán)
#17535
- cherry-pick 50f7455 from upstream V8 (Michaël Zasso)
#16591
* events:
- remove reaches into _events internals (Anatoli Papirovski)
#17440
* http:
- add rawPacket in err of `clientError` event (XadillaX)
#17672
* http2:
- implement maxSessionMemory (James M Snell)
#17967
- add initial support for originSet (James M Snell)
#17935
- add altsvc support (James M Snell)
#17917
- perf_hooks integration (James M Snell)
#17906
* net:
- remove Socket.prototype.write (Anna Henningsen)
#17644
- remove Socket.prototype.listen (Ruben Bridgewater)
#13735
* repl:
- show lexically scoped vars in tab completion (Michaël Zasso)
#16591
* stream:
- rm {writeable/readable}State.length (Calvin Metcalf)
#12857
- add flow and buffer properties to streams (Calvin Metcalf)
#12855
* util:
- allow wildcards in NODE_DEBUG variable (Tyler)
#17609
* zlib:
- add ArrayBuffer support (Jem Bezooyen)
#16042
* Addedew collaborator**
- [starkwang](https://github.com/starkwang) Weijia Wang
* Addedew TSC member**
- [danbev](https://github.com/danbev) Daniel Bevenius
PR-URL: #18069
MylesBorins
added a commit
that referenced
this pull request
Jan 10, 2018
Notable change:
* async_hooks:
- deprecate AsyncHooks Sensitive API and runInAsyncIdScope. Neither
API were documented. (Andreas Madsen)
#16972
* deps:
- update nghttp2 to 1.29.0 (James M Snell)
#17908
- upgrade npm to 5.6.0 (Kat Marchán)
#17535
- cherry-pick 50f7455 from upstream V8 (Michaël Zasso)
#16591
* events:
- remove reaches into _events internals (Anatoli Papirovski)
#17440
* http:
- add rawPacket in err of `clientError` event (XadillaX)
#17672
* http2:
- implement maxSessionMemory (James M Snell)
#17967
- add initial support for originSet (James M Snell)
#17935
- add altsvc support (James M Snell)
#17917
- perf_hooks integration (James M Snell)
#17906
- Refactoring and cleanup of Http2Session and Http2Stream destroy
(James M Snell) #17406
* net:
- remove Socket.prototype.write (Anna Henningsen)
#17644
- remove Socket.prototype.listen (Ruben Bridgewater)
#13735
* repl:
- show lexically scoped vars in tab completion (Michaël Zasso)
#16591
* stream:
- rm {writeable/readable}State.length (Calvin Metcalf)
#12857
- add flow and buffer properties to streams (Calvin Metcalf)
#12855
* util:
- allow wildcards in NODE_DEBUG variable (Tyler)
#17609
* zlib:
- add ArrayBuffer support (Jem Bezooyen)
#16042
* Addedew collaborator**
- [starkwang](https://github.com/starkwang) Weijia Wang
* Addedew TSC member**
- [danbev](https://github.com/danbev) Daniel Bevenius
PR-URL: #18069
MylesBorins
added a commit
that referenced
this pull request
Jan 10, 2018
Notable change:
* async_hooks:
- deprecate AsyncHooks Sensitive API and runInAsyncIdScope. Neither
API were documented. (Andreas Madsen)
#16972
* deps:
- update nghttp2 to 1.29.0 (James M Snell)
#17908
- upgrade npm to 5.6.0 (Kat Marchán)
#17535
- cherry-pick 50f7455 from upstream V8 (Michaël Zasso)
#16591
* events:
- remove reaches into _events internals (Anatoli Papirovski)
#17440
* http:
- add rawPacket in err of `clientError` event (XadillaX)
#17672
* http2:
- implement maxSessionMemory (James M Snell)
#17967
- add initial support for originSet (James M Snell)
#17935
- add altsvc support (James M Snell)
#17917
- perf_hooks integration (James M Snell)
#17906
- Refactoring and cleanup of Http2Session and Http2Stream destroy
(James M Snell) #17406
* net:
- remove Socket.prototype.write (Anna Henningsen)
#17644
- remove Socket.prototype.listen (Ruben Bridgewater)
#13735
* repl:
- show lexically scoped vars in tab completion (Michaël Zasso)
#16591
* stream:
- rm {writeable/readable}State.length (Calvin Metcalf)
#12857
- add flow and buffer properties to streams (Calvin Metcalf)
#12855
* util:
- allow wildcards in NODE_DEBUG variable (Tyler)
#17609
* zlib:
- add ArrayBuffer support (Jem Bezooyen)
#16042
* Addedew collaborator**
- [starkwang](https://github.com/starkwang) Weijia Wang
* Addedew TSC member**
- [danbev](https://github.com/danbev) Daniel Bevenius
PR-URL: #18069
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
stream: remove
undefinedcheckvalidChunkallowedundefinedas a chunk in object mode; however,this was redundant, since:
validChunk()is only used by.write()validChunk()check passes forundefined,.write()calls
writeOrBuffer()writeOrBuffer()does not receive a Buffer, it callsdecodeChunk()decodeChunk()ignoresundefinedbecause it checkstypeof chunk === 'string'chunk.lengthis accessed, which throws anerror if
chunkisundefined.This “fixes” a bug in the sense that
state.pendingcbis no longerincremented for write attempts that fail like this.
net: remove Socket.prototype.write
This is superfluous now that typechecking in
netandstreamare aligned.Checklist
make -j4 test(UNIX), orvcbuild test(Windows) passestest-net-connect-bufferchecks the error forundefined)Affected core subsystem(s)
net, stream