http-party / http-server

a simple zero-configuration command-line http server
MIT License
13.42k stars 1.48k forks source link

Close server port on exit #823

Open ngocdaothanh opened 2 years ago

ngocdaothanh commented 2 years ago

When http-server is spawned as a child process, when it exits (uppon SIGINT/SIGTERM), in certain conditions (depending on platforms and the platform conditions, it's hard to reliably reproduce), the port may still be open.

When the parent process tries to run http-server on the same port again, it will fail as the port is still open.

This PR fixes the problem by closing the port on exit.

Relevant issues
Contributor checklist
Maintainer checklist
ngocdaothanh commented 2 years ago

To maintainers: Would you please kindly release a new version, after merging this PR?

ngocdaothanh commented 2 years ago

When http-server is spawned as a child process, when it exits (uppon SIGINT/SIGTERM), in certain conditions (depending on platforms and the platform conditions, it's hard to reliably reproduce), the port may still be open.

I've updated the code to set up "CTRL-C" hook, before printing out "Hit CTRL-C to stop the server".

It's because the parent process relies on "Hit CTRL-C to stop the server" (or "Available on: ...") to know that http-server is ready. But at this time in the old code, the "CTRL-C" hook hasn't been set up yet. If the parent process kills http-server at this time, the port will still be open.

github-actions[bot] commented 1 year ago

This pull request has been inactive for 360 days