On Fri, Oct 09, 2015 at 03:14:26PM -0400, Robert Haas wrote:
> On Thu, Oct 8, 2015 at 11:26 PM, Noah Misch <noah(at)leadboat(dot)com> wrote:
> >> In particular, magically
> >> substituting 127.0.0.1 for 0.0.0.0 seems utterly without principle.
> >
> > Binding a listening socket to "0.0.0.0" listens on every local IPv4 address,
> > and 127.0.0.1 is one of those addresses. That's the principle. It's
> > inelegant, but I expect it to work everywhere.
>
> But... what about the machine's other addresses?
>
> If Windows doesn't treat 0.0.0.0 to mean listen on every interface,
> that's a shame. But making it only listen on 127.0.0.1 and not any of
> the others does not seem better. Then, instead of 0.0.0.0 failing on
> Windows, it would instead work but with different behavior. That
> doesn't seem good either.
The listening side is in good shape today. This thread is about the address
that pg_ctl uses in PQping("host=..."). Listening on 0.0.0.0 is portable.
PQping("host='0.0.0.0'") relies on non-portable semantics in the underlying
connect() syscall. PQping("host='127.0.0.1'") is a portable substitute.