Open
Description
While responding to a request destroying the TLSSocket results in the response's close
event. But destroying the parent socket does not result in this.
But I feel that doing a destroy() on the parent socket should result in the same behavior as a destroy executed on the TLSSocket. If I understand it correctly TLSSocket is just piping encrypted data through the parent socket and is just a higher level interface for dealing with encrypted connections.
Code to test with, run it and open https://localhost:1234 then watch the terminal. Then run it again changing if (1)
to if (0)
.
import * as zlib from 'zlib'
import * as https from 'https'
const log = console.log
function main() {
https.createServer(tlsOptions, (request, response) => {
response.on('close', () => {
log('Response closed')
})
if (1) request.socket.destroy() // this causes the response to close
else request.socket._parent.destroy() // but destroying the parent socket doesn't, which to me is a bug
})
.listen(1234)
.on('clientError', (err, socket) => {
log('clientError:', err)
})
}
const tlsOptions = {
key: zlib.gunzipSync(Buffer.from('H4sIAAAAAAAAA22VtxKrWAIFc75icuoVCE+IuaCL90YZ3koYYQRfv29n0z3pSbo66T9//k4EKrT+8XzhH8eDkRCAf3SQ/vf4g5gQgumEoiDokuACYQUx3rGyzFatnGHixPSn677S8kLXoF1pbC63Dz5yeH5jvodLP6RbFzzUvnXTlnvVjd8XDN7jYyxpKVWsRO5O2mwmqq8h/7J9FjxI5fl1pgebW5pYhJGEfL1vToa0zx19clJEJc2cnp+KY1epcVAS9m6pwpGbPs3VRZvmLA4cQc6cMMKHAL6fG0Kt/QFGCSq/znzfPil9M+s8x3llqLnm5tgebhXUmFbj73vr09/N+OAS98GWNeD5uoZEGUsKn0Bheyn0t6bfT7dqgwaX0bxLmj1eFuvDfy0Mj0Bz5dGlu+TNpNIpFGdI75eLbI/M1/f2uLajfLUfC3OB5aYhNg87+cVZmIjGZpxQFlxBFKa/sqXSxUIfui3n3uJcIuHXW4ateKjPRB88Ss0aVQ7fhLFtrMs7KImd+DOMVEpLKtTGLQ6uiW6eszI3ONiUd4Wg27O9/GaumH3UlDKVQsyV5wpXoVBUMm6v05oIjYPyfjStxINjaFLlAPFxyyVhTo9CvubTXome4Q4BYxwN3L+jeusP4ND9cTzid66fhV9eLiE06hKGMfzpJvSCGRph0fAtQJJHMFYViaajBYVYiQcWfx5WjsGzWFMRPnOJCTmVRjerxmPHIoXztsCVWIn+Tg0d15BLCT/z6z4ulmvCseKFFzUohqWFclE2h8WgzbYzbRi5Vh1Q/YOO2R/RNjBndxs1urVFTpxtZA5ITQoECp0YY2M8VZZ10/+EDbYPwk+n/Oi+2TOXMy1RhFuLH+g2lb/tHNYsQpyP7Eid90pYqFGDBddzqG0QW+IFzfjE4qqKfDpICk27kyIT1y7cIpR4HXPv825X/5Av9kRTz9yUI8/5UNmnfmebnpU5hoRfFM+O42VPjqaSZHI2OZ9oRi7qJvcv8ZkKO/KFW6xOC/cqWUydLGoha0XpUJk9xmn4GHnFJrMrSSpRkiN4frJoUYvGjI0v91Fzu9iQZ002JF0xzmHUwljfulJU3YGr5rU/tE/v0N9CvK7tg3LfZ7CUwoafHE/vvN2j+fhBTcRonWN/GSl4dkvxBrPVEIliDoTK097JYHdMNHaQ/U8yEVpWxPh1LE5Zq5dKZ1kkEvJM13zue1bT4elfVCnE742aEju1Q2LJ3/sHsAGMUcWJXtmqWlZLe9jUou9SaP0ryhE6sM4fsJWlHsWaTJIgqMvVO57Bwd/FweEsy6B6Xk9CTm299Bsf8HE2wms2E4wYI/pA0pmNuMyS0ycpx+GZOIDuOAH/iyw0/ZO3wQXTzSIKMciBcYxWMjVUc8WVEyQzC5sK4a8lMnZbgG/z8R3eCeOUTFGIlVEYErsLCUpck8ERYeanjLGCycN4w638l3IA78FILQKDrhBVMGcZIWCpEoUosVVOaMx4ie8RZkCV7zZUFl7weIa59OWPn8RtMWmP9PujajJiVAQjuLrYKKTP/Kb3idmvw2S0jio0PTVQPgk7yo9ZUUw+6NqdPYMd0zgTQf1QfEhQyGOqSqbiZQPYrq+aES2LmR6Vj3UIN1KTKczx1qijKKx+/Wx5gwCH0Ex/9M3AotE8Ezkpf+EXJVMktjxaPKCJUR4NwjgkRlzkhaPAAvr89PoBWmFIV0OlRci/SQGW/P9T8x9rtdpNiwYAAA==', 'base64')),
cert: zlib.gunzipSync(Buffer.from('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', 'base64'))
}
// log(zlib.gzipSync(tlsOptions.key).toString('base64'))
// log(zlib.gzipSync(tlsOptions.cert).toString('base64'))
main()