strongloop / strong-remoting

Communicate between objects in servers, mobile apps, and other servers.
www.strongloop.com
Other
105 stars 93 forks source link

.end should not be called on already handled http responses #485

Open mitsos1os opened 3 years ago

mitsos1os commented 3 years ago

Steps to reproduce

Every response that contains plain API data (not file download, binary, etc...), is ended twice.

  1. from operationResults.sendBody
  2. explicitly calling .end on the response one line below

Current Behavior

On NodeJS versions >= 13.8.0 the internal NodeJS behavior of response handling has changed (see relevant NodeJS issue), leading to hanging requests. I have a local dev environment where a Loopback v3 API is run, contaning also the middleware for static-file serving. Every file request that happens to re-use a socket that was ended twice from the above mentioned lines, hangs.

Expected Behavior

The requests should complete successfully.

Versions prior to v13.8.0 have a response handling mechanism that is not affected by multiple .end on a socket instance. I believe this is also a bug in NodeJS, that is also I opened the issue there.

However, I also believe double ending the response is a bad practice, since res.json that is called from sendBodyJson terminates the response itself, without the need to explicitly .end the response one line below.

Additional information

linux x64 14.15.3 loopback@3.25.1

Related Issues

None

mitsos1os commented 3 years ago

I know that officially strong-remoting is EOL. If you are willing to accept this issue, I would be happy to issue a PR for it

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.