-
-
Notifications
You must be signed in to change notification settings - Fork 34.7k
Closed
Labels
httpIssues or PRs related to the http subsystem.Issues or PRs related to the http subsystem.
Description
- Version: v10.14.2
- Platform: Darwin anahola 18.6.0 Darwin Kernel Version 18.6.0: Thu Apr 25 23:16:27 PDT 2019; root:xnu-4903.261.4~2/RELEASE_X86_64 x86_64
- Subsystem: stream
In node v10.14.1, an asyncIterator over an upgraded HTTP socket completes after being closed from the client. In node v10.14.2, it does not.
The test case:
const http = require('http')
const server = http.createServer(() => {})
server.on('upgrade', async (request, socket) => {
socket.write([
'HTTP/1.1 101 Switching Protocols',
'upgrade: websocket',
'connection: upgrade',
'\r\n'
].join('\r\n'))
for await (const message of socket[Symbol.asyncIterator]()) {
console.log(message.toString())
}
console.log('done')
socket.destroy()
server.close()
})
server.listen(() => {
const { port, family } = server.address()
const request = http.request({
port,
family: family === 'IPv6' ? 6 : 4,
headers: {
connection: 'upgrade',
upgrade: 'websocket'
}
})
request.on('upgrade', (response, socket) => { socket.end('sent') })
request.end('')
})In v10.14.1, this is the output followed by the process exiting.
$ nvm exec 10.14.1 node case.js
Running node v10.14.1 (npm v6.4.1)
(node:89863) ExperimentalWarning: Readable[Symbol.asyncIterator] is an experimental feature. This feature could change at any time
sent
done
$ _
In v10.14.2, only the first line is printed and the process never exits.
$ nvm exec 10.14.2 node case.js
Running node v10.14.2 (npm v6.4.1)
(node:90228) ExperimentalWarning: Readable[Symbol.asyncIterator] is an experimental feature. This feature could change at any time
sent
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
httpIssues or PRs related to the http subsystem.Issues or PRs related to the http subsystem.