Skip site navigation (1) Skip section navigation (2)

Adding Rendezvous support to postmaster

From: Chris Campbell <chris(at)bignerdranch(dot)com>
To: pgsql-patches(at)postgresql(dot)org
Subject: Adding Rendezvous support to postmaster
Date: 2003-03-27 05:04:02
Message-ID: 86EFD8E4-6011-11D7-9D2E-000393147784@bignerdranch.com (view raw or flat)
Thread:
Lists: pgsql-patches
The attached diffs add Rendezvous support to postmaster when it's 
running on Darwin (Mac OS X).

Rendezvous allows services (such as a database server) to advertise 
their availability to other hosts on their link-local network, and 
client programs to browse the services on the network to see what's 
available. It is Apple's implementation of ZEROCONF.

    http://developer.apple.com/macosx/rendezvous/

This allows client programs running on computers that are on the same 
link-local network as the postgresql server to automatically find the 
server's IP address and port number. This adds great ease-of-use for 
end users.

I propose adding a configuration variable to postgresql.conf called 
"service_name" that allows the user to specify the name used to 
advertise the database service. If this variable isn't defined in the 
postgresql.conf file, then no service is advertised. If it is '', then 
the computer's "Rendezvous Name" is used (this is similar to the 
hostname, see the link below for more info). Otherwise, if it's a 
non-empty string, that string is used as the name of the service.

    http://developer.apple.com/qa/qa2001/qa1228.html

If there's already a service on the network with that name, then the 
service registration silently fails and no service is registered.

Rendezvous also has the notion of a service type string. It's a bit 
like a domain name: I suggest we use "_pgsql._tcp." (another example 
would be "_ftp._tcp.").

There's very little code involved: just 1 function call in 
PostmasterMain() after postmaster has started listening on a TCP 
socket. And 1 addition to the GUC list of configuration variables.

All the code is #ifdef'ed inside HAVE_RENDEZVOUS, which is only defined 
in src/include/port/darwin.h. Even once we know the OS is darwin, we 
still need to check to make sure that Rendezvous is available, either 
by OS version, or by checking for the existence of a needed header 
file, etc.

I've included patches for CVS top-of-tree and postgresql-7.3.2.

Thanks!

- Chris


Attachment: pgsql-7.3.2-rendezvous.diff
Description: application/octet-stream (3.1 KB)
Attachment: pgsql-HEAD-rendezvous.diff
Description: application/octet-stream (3.6 KB)

Responses

pgsql-patches by date

Next:From: Tom LaneDate: 2003-03-27 07:04:42
Subject: Re: Adding Rendezvous support to postmaster
Previous:From: Chris CampbellDate: 2003-03-27 01:03:35
Subject: Adding Rendezvous support to postmaster

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group