Re: [HACKERS] PostgreSQL 8.0.3 and Ipv6 - Mailing list pgsql-patches
| From | Andrew Dunstan |
|---|---|
| Subject | Re: [HACKERS] PostgreSQL 8.0.3 and Ipv6 |
| Date | |
| Msg-id | 43091776.3060503@dunslane.net Whole thread Raw |
| Responses |
Re: [HACKERS] PostgreSQL 8.0.3 and Ipv6
|
| List | pgsql-patches |
Tom Lane wrote:
>Andrew Dunstan <andrew@dunslane.net> writes:
>
>
>>The one place that very slightly bothers me is the ::1 line in
>>pg_hba.conf. The fact that it comes last in the default config is its
>>saving grace - it won't ever be reached by a passing connection. I think
>>at least, though, we should put a warning comment line in front of it,
>>
>>
>
>If you like, you can improve initdb to comment that line out if
>getaddrinfo chokes on "::1", rather than believing HAVE_IPV6.
>
>
>
>
Good idea. Here's a patch for that. Rather than commenting it out I used
the slightly newer initdb facility to remove it and the associated
comment line altogether.
Passes "make check" on my linux box.
cheers
andrew
Index: src/bin/initdb/initdb.c
===================================================================
RCS file: /home/cvsmirror/pgsql/src/bin/initdb/initdb.c,v
retrieving revision 1.94
diff -c -r1.94 initdb.c
*** src/bin/initdb/initdb.c 2 Aug 2005 15:16:27 -0000 1.94
--- src/bin/initdb/initdb.c 21 Aug 2005 23:41:25 -0000
***************
*** 148,156 ****
static char *xstrdup(const char *s);
static char **replace_token(char **lines,
const char *token, const char *replacement);
- #ifndef HAVE_UNIX_SOCKETS
static char **filter_lines_with_token(char **lines, const char *token);
- #endif
static char **readfile(char *path);
static void writefile(char *path, char **lines);
static FILE *popen_check(const char *command, const char *mode);
--- 148,154 ----
***************
*** 330,336 ****
*
* a sort of poor man's grep -v
*/
- #ifndef HAVE_UNIX_SOCKETS
static char **
filter_lines_with_token(char **lines, const char *token)
{
--- 328,333 ----
***************
*** 351,357 ****
return result;
}
- #endif
/*
* get the lines from a text file
--- 348,353 ----
***************
*** 1157,1162 ****
--- 1153,1170 ----
char **conflines;
char repltok[100];
char path[MAXPGPATH];
+
+ struct addrinfo *gai_result;
+ struct addrinfo hints;
+
+ hints.ai_flags = AI_NUMERICHOST;
+ hints.ai_family = PF_UNSPEC;
+ hints.ai_socktype = 0;
+ hints.ai_protocol = 0;
+ hints.ai_addrlen = 0;
+ hints.ai_canonname = NULL;
+ hints.ai_addr = NULL;
+ hints.ai_next = NULL;
fputs(_("creating configuration files ... "), stdout);
fflush(stdout);
***************
*** 1210,1220 ****
conflines = replace_token(conflines,"@remove-line-for-nolocal@","");
#endif
! #ifndef HAVE_IPV6
! conflines = replace_token(conflines,
! "host all all ::1",
! "#host all all ::1");
! #endif
/* Replace default authentication methods */
conflines = replace_token(conflines,
--- 1218,1234 ----
conflines = replace_token(conflines,"@remove-line-for-nolocal@","");
#endif
! /*
! * runtime test for IPv6 support (previously compile time test).
! * this lets us build on hosts with IPv6 support and run
! * on hosts without, especially on Windows.
! *
! */
! if (getaddrinfo("::1", NULL, &hints, &gai_result) != 0)
! conflines = filter_lines_with_token(conflines,
! "@remove-line-for-no-ip6@");
! else
! conflines = replace_token(conflines,"@remove-line-for-no-ip6@","");
/* Replace default authentication methods */
conflines = replace_token(conflines,
Index: src/backend/libpq/pg_hba.conf.sample
===================================================================
RCS file: /home/cvsmirror/pgsql/src/backend/libpq/pg_hba.conf.sample,v
retrieving revision 1.59
diff -c -r1.59 pg_hba.conf.sample
*** src/backend/libpq/pg_hba.conf.sample 15 Aug 2005 02:40:25 -0000 1.59
--- src/backend/libpq/pg_hba.conf.sample 21 Aug 2005 23:33:30 -0000
***************
*** 67,71 ****
@remove-line-for-nolocal@local all all @authmethod@
# IPv4 local connections:
host all all 127.0.0.1/32 @authmethod@
! # IPv6 local connections:
! host all all ::1/128 @authmethod@
--- 67,71 ----
@remove-line-for-nolocal@local all all @authmethod@
# IPv4 local connections:
host all all 127.0.0.1/32 @authmethod@
! @remove-line-for-no-ip6@# IPv6 local connections:
! @remove-line-for-no-ip6@host all all ::1/128 @authmethod@
pgsql-patches by date: