diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 7a44f074a8605579c0d2f7d3fe98c1d1bc3f0e80..dd37586f1c05b8d3f3db8cbe3f3c35d71d17f47d 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -1,4 +1,4 @@ - + Server Configuration @@ -472,6 +472,20 @@ SET ENABLE_SEQSCAN TO OFF; + + bonjour (boolean) + + bonjour configuration parameter + + + + Enables advertising the server's existence via + Bonjour. The default is off. + This parameter can only be set at server start. + + + + bonjour_name (string) @@ -479,7 +493,7 @@ SET ENABLE_SEQSCAN TO OFF; - Specifies the Bonjour broadcast + Specifies the Bonjour service name. The computer name is used if this parameter is set to the empty string '' (which is the default). This parameter is ignored if the server was not compiled with diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 424bb72236daaf14b7c3aea4cf6b4c14a588ba89..b616eaca135410ce1340c8819e1c8a43766d1f73 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.595 2009/09/08 16:08:26 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.596 2009/09/08 17:08:36 tgl Exp $ * * NOTES * @@ -200,6 +200,7 @@ bool log_hostname; /* for ps display and logging */ bool Log_connections = false; bool Db_user_namespace = false; +bool enable_bonjour = false; char *bonjour_name; /* PIDs of special child processes; 0 when not running */ @@ -854,7 +855,7 @@ PostmasterMain(int argc, char *argv[]) #ifdef USE_BONJOUR /* Register for Bonjour only if we opened TCP socket(s) */ - if (ListenSocket[0] != -1) + if (enable_bonjour && ListenSocket[0] != -1) { DNSServiceErrorType err; diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 70dcefbc315616986d924cab8f447eb3c04cca19..608378cb4b72b1dde84a9ee656d0732c244534a3 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.515 2009/09/03 22:08:05 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.516 2009/09/08 17:08:36 tgl Exp $ * *-------------------------------------------------------------------- */ @@ -152,6 +152,7 @@ static bool assign_phony_autocommit(bool newval, bool doit, GucSource source); static const char *assign_custom_variable_classes(const char *newval, bool doit, GucSource source); static bool assign_debug_assertions(bool newval, bool doit, GucSource source); +static bool assign_bonjour(bool newval, bool doit, GucSource source); static bool assign_ssl(bool newval, bool doit, GucSource source); static bool assign_stage_log_stats(bool newval, bool doit, GucSource source); static bool assign_log_stats(bool newval, bool doit, GucSource source); @@ -681,6 +682,14 @@ static struct config_bool ConfigureNamesBool[] = &session_auth_is_superuser, false, NULL, NULL }, + { + {"bonjour", PGC_POSTMASTER, CONN_AUTH_SETTINGS, + gettext_noop("Enables advertising the server via Bonjour."), + NULL + }, + &enable_bonjour, + false, assign_bonjour, NULL + }, { {"ssl", PGC_POSTMASTER, CONN_AUTH_SECURITY, gettext_noop("Enables SSL connections."), @@ -2199,7 +2208,7 @@ static struct config_string ConfigureNamesString[] = { {"bonjour_name", PGC_POSTMASTER, CONN_AUTH_SETTINGS, - gettext_noop("Sets the Bonjour broadcast service name."), + gettext_noop("Sets the Bonjour service name."), NULL }, &bonjour_name, @@ -7394,6 +7403,21 @@ assign_debug_assertions(bool newval, bool doit, GucSource source) return true; } +static bool +assign_bonjour(bool newval, bool doit, GucSource source) +{ +#ifndef USE_BONJOUR + if (newval) + { + ereport(GUC_complaint_elevel(source), + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("Bonjour is not supported by this build"))); + return false; + } +#endif + return true; +} + static bool assign_ssl(bool newval, bool doit, GucSource source) { diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index c6c02fcd812ab8d4186cbc1b7dbd0b383ef3e771..4a361391f2c7b6c33e07cb2a864326d9a933ae16 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -69,6 +69,8 @@ #unix_socket_group = '' # (change requires restart) #unix_socket_permissions = 0777 # begin with 0 to use octal notation # (change requires restart) +#bonjour = off # advertise server via Bonjour + # (change requires restart) #bonjour_name = '' # defaults to the computer name # (change requires restart) diff --git a/src/include/postmaster/postmaster.h b/src/include/postmaster/postmaster.h index 3b8061e4f7dc0d05a985a4185d5c1b3f351e3c9b..47e014bee39d3e303698503810cb0e52afc1a079 100644 --- a/src/include/postmaster/postmaster.h +++ b/src/include/postmaster/postmaster.h @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/postmaster/postmaster.h,v 1.20 2009/05/05 19:59:00 tgl Exp $ + * $PostgreSQL: pgsql/src/include/postmaster/postmaster.h,v 1.21 2009/09/08 17:08:36 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -27,6 +27,7 @@ extern int PreAuthDelay; extern int AuthenticationTimeout; extern bool Log_connections; extern bool log_hostname; +extern bool enable_bonjour; extern char *bonjour_name; #ifdef WIN32