From 33bf242a8a30a5294b3aa8034d71e6a49be5320c Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 8 Aug 2004 20:17:36 +0000 Subject: [PATCH] Make listen_addresses be a comma-separated list instead of a space-separated list. More consistent with our other list-containing GUC variables. --- doc/src/sgml/runtime.sgml | 4 +-- src/backend/postmaster/postmaster.c | 44 +++++++++++++++-------------- src/backend/utils/misc/guc.c | 7 +++-- 3 files changed, 29 insertions(+), 26 deletions(-) diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml index d393a6d180..117a0eb21b 100644 --- a/doc/src/sgml/runtime.sgml +++ b/doc/src/sgml/runtime.sgml @@ -1,5 +1,5 @@ @@ -626,7 +626,7 @@ SET ENABLE_SEQSCAN TO OFF; Specifies the TCP/IP address(es) on which the server is to listen for connections from client applications. - The value takes the form of a space-separated list of host names + The value takes the form of a comma-separated list of host names and/or numeric IP addresses. The special entry * corresponds to all available IP interfaces. If the list is empty, the server does not listen on any IP interface diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 870ad318a8..f4ee0c8937 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -37,7 +37,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.420 2004/08/05 23:32:10 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.421 2004/08/08 20:17:34 tgl Exp $ * * NOTES * @@ -113,6 +113,7 @@ #include "storage/bufmgr.h" #include "access/xlog.h" #include "tcop/tcopprot.h" +#include "utils/builtins.h" #include "utils/guc.h" #include "utils/memutils.h" #include "utils/ps_status.h" @@ -698,23 +699,26 @@ PostmasterMain(int argc, char *argv[]) if (ListenAddresses) { - char *curhost, - *endptr; - char c; + char *rawstring; + List *elemlist; + ListCell *l; - curhost = ListenAddresses; - for (;;) + /* Need a modifiable copy of ListenAddresses */ + rawstring = pstrdup(ListenAddresses); + + /* Parse string into list of identifiers */ + if (!SplitIdentifierString(rawstring, ',', &elemlist)) { - /* ignore whitespace */ - while (isspace((unsigned char) *curhost)) - curhost++; - if (*curhost == '\0') - break; - endptr = curhost; - while (*endptr != '\0' && !isspace((unsigned char) *endptr)) - endptr++; - c = *endptr; - *endptr = '\0'; + /* syntax error in list */ + ereport(FATAL, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("invalid list syntax for \"listen_addresses\""))); + } + + foreach(l, elemlist) + { + char *curhost = (char *) lfirst(l); + if (strcmp(curhost, "*") == 0) status = StreamServerPort(AF_UNSPEC, NULL, (unsigned short) PostPortNumber, @@ -729,12 +733,10 @@ PostmasterMain(int argc, char *argv[]) ereport(WARNING, (errmsg("could not create listen socket for \"%s\"", curhost))); - *endptr = c; - if (c != '\0') - curhost = endptr + 1; - else - break; } + + list_free(elemlist); + pfree(rawstring); } #ifdef USE_RENDEZVOUS diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index d619501850..5c4908f27d 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -10,7 +10,7 @@ * Written by Peter Eisentraut . * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.229 2004/08/08 15:37:06 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.230 2004/08/08 20:17:36 tgl Exp $ * *-------------------------------------------------------------------- */ @@ -1740,8 +1740,9 @@ static struct config_string ConfigureNamesString[] = { {"listen_addresses", PGC_POSTMASTER, CONN_AUTH_SETTINGS, - gettext_noop("Sets the host name or IP addresses to listen to."), - NULL + gettext_noop("Sets the host name or IP address(es) to listen to."), + NULL, + GUC_LIST_INPUT }, &ListenAddresses, "localhost", NULL, NULL