Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Choose a random free port #20

Open
felixonmars opened this issue Aug 6, 2016 · 5 comments
Open

Choose a random free port #20

felixonmars opened this issue Aug 6, 2016 · 5 comments

Comments

@felixonmars
Copy link
Collaborator

It would be nice to have an option to choose a random free port, and the target program can read it from environment variables.

@jd
Copy link
Owner

jd commented Aug 6, 2016

Agreed, it's actually on my TODO list. It's pretty hard to "find a random available port" because there's a big race between the time you find the free port and the time the program binds it.

It seems the best way would be to be able to provide a port range to pifpaf that you are sure are available, no matters what.

@jd jd added the enhancement label Aug 6, 2016
@kryskool
Copy link

kryskool commented Aug 6, 2016

I prefer to bind a loopback interface 127.0.0.0/8 (according to the RFC 1700) and always keep the same port. It works on Linux, Windows (loopback adapter) and MacOS

On MacOS you must declare the new loopback interface manually like
sudo ifconfig lo666 alias 127.6.6.6
and to remove it
sudo ifconfig lo666 -alias 127.6.6.6

I use this tips to launch multiple versions of PostgreSQL server with loopback that containt the version number in the loopback address and port 5432 like:

  • 127.0.9.3 for PostgreSQL 9.3
  • 127.0.9.4 for PostgreSQL 9.4
  • 127.0.9.5 for PostgreSQL 9.5

@jd
Copy link
Owner

jd commented Aug 6, 2016

@kryskool This is a good idea, but it's gonna be tricky if it's not portable out of the box on Darwin :(

@graingert
Copy link

can you not listen on port 0? then ask the program what port it found?

@graingert
Copy link

@jd it might be good to use https://github.com/Yelp/ephemeral-port-reserve/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants