Skip to content

[bug] v16.3.0 - https server request.socket.destroy() vs ._parent.destroy() inconsistency #39046

Open
@JoakimCh

Description

@JoakimCh

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()

Metadata

Metadata

Assignees

No one assigned

    Labels

    httpsIssues or PRs related to the https subsystem.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions