POSIX Local IPC Sockets

POSIX local IPC sockets, also known as UNIX domain sockets, are an alternative to the TCP/IP sockets that Rendezvous normally uses for communication between client and daemon. When available, IPC sockets yield faster performance than TCP/IP sockets. All other Rendezvous behavior is transparent to this choice of socket protocol.

Availability

IPC sockets are available only on UNIX platforms that support AF_UNIX or AF_LOCAL socket types.

Behavior

On UNIX platforms where IPC is available, they are the default behavior of Rendezvous (release 8.3 and later). That is, Rendezvous automatically uses IPC sockets for communication between client and daemon processes on the same host computer. To override (or force) this default behavior, you can explicitly configure either the daemon or the client (see below).

On platforms where IPC is not available, requests to use IPC always fail.

Daemon Configuration

The daemon’s -listen parameter accepts values that specify the available socket protocols.

Socket Type for Client-Daemon Communication—Daemon

Value

Behavior

tcp:port

The daemon listens only for TCP connection requests.

If the operating system prevents the daemon from listening for TCP connections, the daemon exits immediately.

ipc:port

The daemon listens for both IPC and TCP connection requests.

If the operating system prevents the daemon from listening for either TCP or IPC connections, the daemon exits immediately.

port

The daemon listens for both IPC and TCP connection requests. However, if the operating system prevents the daemon from listening for IPC connections, the daemon does not exit; instead, it degrades gracefully, listening only for TCP connection requests.

ipc:ip_addr:port

ip_addr:port

When an ip_addr is present, the daemon listens for both IPC and TCP connection requests, listening only on the interface ip_addr (on port). If ip_addr is 127.0.0.1, then the daemon listens for connection requests only from local clients.

If the prefix ipc: is present, and the operating system prevents the daemon from listening for either TCP or IPC connections, the daemon exits immediately.

If the prefix ipc: is absent, and the operating system prevents the daemon from listening for IPC connections, the daemon does not exit; instead, it degrades gracefully, listening only for TCP connection requests.

More than One Daemon

When starting two (or more) daemons on the same host computer, you must specify distinct port numbers. If one daemon is already using a port number, and another daemon attempts to reuse it, the second daemon exits immediately.

Client Configuration

Client programs can specify the preferred socket protocol for connecting to the daemon; specify the socket preference in the daemon parameter of the transport creation call.

Socket Type for Client-Daemon Communication—Client

Value

Behavior

tcp:port

The client connects to the daemon using a TCP/IP socket.

ipc:port

The client connects to the daemon using an IPC socket. If the connection request fails, then the transport creation call fails too.

port

The client first attempts to connect to the daemon using an IPC socket; if that attempt fails, then the client attempts to connect using a TCP/IP socket.

Note 

IPC sockets are available only if the client and the daemon reside on the same host computer.

Daemon Auto-Start

If no daemon is listening for client connections on port, then the transport creation call attempts to start one automatically. The transport creation call replicates its own daemon argument as the new daemon’s -listen argument.

When a client specifies a remote daemon that is not present, the client does not auto-start a daemon in that remote location.