On Tue, Oct 27, 2015 at 05:31:25PM +0900, Tatsuo Ishii wrote:
> > No, PQping("host='127.0.0.1'") fails to reach a listen_addresses='::' server
> > on many systems. Here's what I thought Kondo was proposing:
> >
> > --- a/src/bin/pg_ctl/pg_ctl.c
> > +++ b/src/bin/pg_ctl/pg_ctl.c
> > @@ -649,5 +649,9 @@ test_postmaster_connection(pgpid_t pm_pid, bool do_checkpoint)
> >
> > - /* If postmaster is listening on "*", use localhost */
> > + /* explanation here */
> > if (strcmp(host_str, "*") == 0)
> > strcpy(host_str, "localhost");
> > + else if (strcmp(host_str, "0.0.0.0") == 0)
> > + strcpy(host_str, "127.0.0.1");
> > + else if (strcmp(host_str, "::") == 0)
> > + strcpy(host_str, "::1");
> >
>
> I see. Would you like to commit this?
I am happy to finish it, but I am no less happy if you finish it. Which do
you prefer?
Should the back-branch commits mirror the master branch? A more-cautious
alternative would be to, in back branches, wrap the change in #ifdefs so it
takes effect only on Windows, OpenBSD and NetBSD. It could break setups with
local firewall rules that block connections to "127.0.0.1" or "::1" without
blocking "0.0.0.0" or "::". Such firewall rules sound outlandish enough that
I would be fairly comfortable not worrying about this and making the change
unconditional in all branches. It's a judgment call, though.