Hacker News
Port 0: The Port That Does Not Exist
greggsy
|next
|previous
[-]
99harry
|next
|previous
[-]
_flux
|root
|parent
|next
[-]
If it's in a script then that might be difficult, but a racy approximation could be to loop e.g. listening socat with different ports for finding the free port. (Or maybe: parse output of ss.) But if the port use is separate from the port binding, then it might still be busy once the time to rebind it comes.
0bytes
|root
|parent
|previous
[-]
justsomehnguy
|next
|previous
[-]
embedding-shape
|next
|previous
[-]
wolrah
|root
|parent
|next
[-]
Same as anything else, an explicit flag to achieve the same "just give me a port" functionality as this "magic number" does without resulting in the documented unpredictable behavior around a technically legitimate port number.
As the article points out, most if not all of the services exposed on port 0 seem to be accidental and likely resulted from people assuming this magic behavior applies everywhere instead of just to one specific API.
Joker_vD
|root
|parent
|previous
[-]
joker@joker:~$ ssh localhost -D 127.0.0.1:0
Bad dynamic forwarding specification '127.0.0.1:0'
joker@joker:~$ ssh localhost -D 127.0.0.1:9999
ssh: connect to host localhost port 22: Connection refused
joker@joker:~$ ssh localhost -L 127.0.0.1:0:localhost:8080
Bad local forwarding specification '127.0.0.1:0:localhost:8080'
joker@joker:~$ ssh localhost -L 127.0.0.1:9999:localhost:8080
ssh: connect to host localhost port 22: Connection refused
Oh well.