On Mon, Oct 12, 2015 at 07:37:42PM -0400, Robert Haas wrote:
> On Fri, Oct 9, 2015 at 10:16 PM, Noah Misch <noah(at)leadboat(dot)com> wrote:
> > 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.
>
> Ah. So in this case 0.0.0.0 is interpreted to mean "any IP that's a
> way to reach the local host", and using 127.0.0.1 makes sense because
> we know that will always be one of them? I could buy that line of
> reasoning.
Exactly.