mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-12 18:34:36 +08:00
Use PostmasterRandom(), not random(), for DSM control segment ID.
Otherwise, every startup gets the same "random" value, which is definitely not what was intended.
This commit is contained in:
parent
419113dfdc
commit
470d886c32
@ -403,7 +403,6 @@ static void processCancelRequest(Port *port, void *pkt);
|
|||||||
static int initMasks(fd_set *rmask);
|
static int initMasks(fd_set *rmask);
|
||||||
static void report_fork_failure_to_client(Port *port, int errnum);
|
static void report_fork_failure_to_client(Port *port, int errnum);
|
||||||
static CAC_state canAcceptConnections(void);
|
static CAC_state canAcceptConnections(void);
|
||||||
static long PostmasterRandom(void);
|
|
||||||
static void RandomSalt(char *salt, int len);
|
static void RandomSalt(char *salt, int len);
|
||||||
static void signal_child(pid_t pid, int signal);
|
static void signal_child(pid_t pid, int signal);
|
||||||
static bool SignalSomeChildren(int signal, int targets);
|
static bool SignalSomeChildren(int signal, int targets);
|
||||||
@ -5101,7 +5100,7 @@ RandomSalt(char *salt, int len)
|
|||||||
/*
|
/*
|
||||||
* PostmasterRandom
|
* PostmasterRandom
|
||||||
*/
|
*/
|
||||||
static long
|
long
|
||||||
PostmasterRandom(void)
|
PostmasterRandom(void)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
|
|
||||||
#include "lib/ilist.h"
|
#include "lib/ilist.h"
|
||||||
#include "miscadmin.h"
|
#include "miscadmin.h"
|
||||||
|
#include "postmaster/postmaster.h"
|
||||||
#include "storage/dsm.h"
|
#include "storage/dsm.h"
|
||||||
#include "storage/ipc.h"
|
#include "storage/ipc.h"
|
||||||
#include "storage/lwlock.h"
|
#include "storage/lwlock.h"
|
||||||
@ -181,7 +182,7 @@ dsm_postmaster_startup(PGShmemHeader *shim)
|
|||||||
{
|
{
|
||||||
Assert(dsm_control_address == NULL);
|
Assert(dsm_control_address == NULL);
|
||||||
Assert(dsm_control_mapped_size == 0);
|
Assert(dsm_control_mapped_size == 0);
|
||||||
dsm_control_handle = random();
|
dsm_control_handle = (dsm_handle) PostmasterRandom();
|
||||||
if (dsm_control_handle == 0)
|
if (dsm_control_handle == 0)
|
||||||
continue;
|
continue;
|
||||||
if (dsm_impl_op(DSM_OP_CREATE, dsm_control_handle, segsize,
|
if (dsm_impl_op(DSM_OP_CREATE, dsm_control_handle, segsize,
|
||||||
|
@ -48,6 +48,7 @@ extern const char *progname;
|
|||||||
|
|
||||||
extern void PostmasterMain(int argc, char *argv[]) pg_attribute_noreturn();
|
extern void PostmasterMain(int argc, char *argv[]) pg_attribute_noreturn();
|
||||||
extern void ClosePostmasterPorts(bool am_syslogger);
|
extern void ClosePostmasterPorts(bool am_syslogger);
|
||||||
|
extern long PostmasterRandom(void);
|
||||||
|
|
||||||
extern int MaxLivePostmasterChildren(void);
|
extern int MaxLivePostmasterChildren(void);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user