mirror of
https://github.com/postgres/postgres.git
synced 2025-09-03 15:22:11 +03:00
Support having multiple Unix-domain sockets per postmaster.
Replace unix_socket_directory with unix_socket_directories, which is a list of socket directories, and adjust postmaster's code to allow zero or more Unix-domain sockets to be created. This is mostly a straightforward change, but since the Unix sockets ought to be created after the TCP/IP sockets for safety reasons (better chance of detecting a port number conflict), AddToDataDirLockFile needs to be fixed to support out-of-order updates of data directory lockfile lines. That's a change that had been foreseen to be necessary someday anyway. Honza Horak, reviewed and revised by Tom Lane
This commit is contained in:
@@ -44,12 +44,12 @@ typedef struct
|
||||
/*
|
||||
* prototypes for functions in pqcomm.c
|
||||
*/
|
||||
extern int StreamServerPort(int family, char *hostName,
|
||||
unsigned short portNumber, char *unixSocketName, pgsocket ListenSocket[],
|
||||
int MaxListen);
|
||||
extern int StreamServerPort(int family, char *hostName,
|
||||
unsigned short portNumber, char *unixSocketDir,
|
||||
pgsocket ListenSocket[], int MaxListen);
|
||||
extern int StreamConnection(pgsocket server_fd, Port *port);
|
||||
extern void StreamClose(pgsocket sock);
|
||||
extern void TouchSocketFile(void);
|
||||
extern void TouchSocketFiles(void);
|
||||
extern void pq_init(void);
|
||||
extern void pq_comm_reset(void);
|
||||
extern int pq_getbytes(char *s, size_t len);
|
||||
|
@@ -411,7 +411,7 @@ extern char *local_preload_libraries_string;
|
||||
* 2 data directory path
|
||||
* 3 postmaster start timestamp (time_t representation)
|
||||
* 4 port number
|
||||
* 5 socket directory path (empty on Windows)
|
||||
* 5 first Unix socket directory path (empty if none)
|
||||
* 6 first listen_address (IP address or "*"; empty if no TCP port)
|
||||
* 7 shared memory key (not present on Windows)
|
||||
*
|
||||
@@ -429,8 +429,9 @@ extern char *local_preload_libraries_string;
|
||||
#define LOCK_FILE_LINE_SHMEM_KEY 7
|
||||
|
||||
extern void CreateDataDirLockFile(bool amPostmaster);
|
||||
extern void CreateSocketLockFile(const char *socketfile, bool amPostmaster);
|
||||
extern void TouchSocketLockFile(void);
|
||||
extern void CreateSocketLockFile(const char *socketfile, bool amPostmaster,
|
||||
const char *socketDir);
|
||||
extern void TouchSocketLockFiles(void);
|
||||
extern void AddToDataDirLockFile(int target_line, const char *str);
|
||||
extern void ValidatePgVersion(const char *path);
|
||||
extern void process_shared_preload_libraries(void);
|
||||
|
@@ -19,7 +19,7 @@ extern int ReservedBackends;
|
||||
extern int PostPortNumber;
|
||||
extern int Unix_socket_permissions;
|
||||
extern char *Unix_socket_group;
|
||||
extern char *UnixSocketDir;
|
||||
extern char *Unix_socket_directories;
|
||||
extern char *ListenAddresses;
|
||||
extern bool ClientAuthInProgress;
|
||||
extern int PreAuthDelay;
|
||||
|
@@ -756,6 +756,8 @@ extern int varstr_cmp(char *arg1, int len1, char *arg2, int len2, Oid collid);
|
||||
extern List *textToQualifiedNameList(text *textval);
|
||||
extern bool SplitIdentifierString(char *rawstring, char separator,
|
||||
List **namelist);
|
||||
extern bool SplitDirectoriesString(char *rawstring, char separator,
|
||||
List **namelist);
|
||||
extern Datum replace_text(PG_FUNCTION_ARGS);
|
||||
extern text *replace_text_regexp(text *src_text, void *regexp,
|
||||
text *replace_text, bool glob);
|
||||
|
Reference in New Issue
Block a user