Adjust signature of walrcv_receive hook.

Commit 314cbfc5da redefined the signature of this hook as
typedef int (*walrcv_receive_type) (char **buffer, int *wait_fd);

But in fact the type of the "wait_fd" variable ought to be pgsocket,
which is what WaitLatchOrSocket expects, and which is necessary if
we want to be able to assign PGINVALID_SOCKET to it on Windows.
So fix that.
This commit is contained in:
Tom Lane 2016-04-14 13:49:37 -04:00
parent 994f112573
commit c2dc194bdb
4 changed files with 7 additions and 7 deletions

View File

@ -16,12 +16,12 @@ bool walrcv_connect(char *conninfo, XLogRecPtr startpoint)
Establish connection to the primary, and starts streaming from 'startpoint'. Establish connection to the primary, and starts streaming from 'startpoint'.
Returns true on success. Returns true on success.
int walrcv_receive(char **buffer, int *wait_fd) int walrcv_receive(char **buffer, pgsocket *wait_fd)
Retrieve any message available without blocking through the Retrieve any message available without blocking through the
connection. If a message was successfully read, returns its connection. If a message was successfully read, returns its
length. If the connection is closed, returns -1. Otherwise returns 0 length. If the connection is closed, returns -1. Otherwise returns 0
to indicate that no data is available, and sets *wait_fd to a file to indicate that no data is available, and sets *wait_fd to a socket
descriptor which can be waited on before trying again. On success, a descriptor which can be waited on before trying again. On success, a
pointer to the message payload is stored in *buffer. The returned pointer to the message payload is stored in *buffer. The returned
buffer is valid until the next call to walrcv_* functions, and the buffer is valid until the next call to walrcv_* functions, and the

View File

@ -52,7 +52,7 @@ static void libpqrcv_readtimelinehistoryfile(TimeLineID tli, char **filename, ch
static bool libpqrcv_startstreaming(TimeLineID tli, XLogRecPtr startpoint, static bool libpqrcv_startstreaming(TimeLineID tli, XLogRecPtr startpoint,
char *slotname); char *slotname);
static void libpqrcv_endstreaming(TimeLineID *next_tli); static void libpqrcv_endstreaming(TimeLineID *next_tli);
static int libpqrcv_receive(char **buffer, int *wait_fd); static int libpqrcv_receive(char **buffer, pgsocket *wait_fd);
static void libpqrcv_send(const char *buffer, int nbytes); static void libpqrcv_send(const char *buffer, int nbytes);
static void libpqrcv_disconnect(void); static void libpqrcv_disconnect(void);
@ -472,14 +472,14 @@ libpqrcv_disconnect(void)
* until the next libpqrcv_* call. * until the next libpqrcv_* call.
* *
* If no data was available immediately, returns 0, and *wait_fd is set to a * If no data was available immediately, returns 0, and *wait_fd is set to a
* file descriptor which can be waited on before trying again. * socket descriptor which can be waited on before trying again.
* *
* -1 if the server ended the COPY. * -1 if the server ended the COPY.
* *
* ereports on error. * ereports on error.
*/ */
static int static int
libpqrcv_receive(char **buffer, int *wait_fd) libpqrcv_receive(char **buffer, pgsocket *wait_fd)
{ {
int rawlen; int rawlen;

View File

@ -379,7 +379,7 @@ WalReceiverMain(void)
char *buf; char *buf;
int len; int len;
bool endofwal = false; bool endofwal = false;
int wait_fd = PGINVALID_SOCKET; pgsocket wait_fd = PGINVALID_SOCKET;
int rc; int rc;
/* /*

View File

@ -145,7 +145,7 @@ extern PGDLLIMPORT walrcv_startstreaming_type walrcv_startstreaming;
typedef void (*walrcv_endstreaming_type) (TimeLineID *next_tli); typedef void (*walrcv_endstreaming_type) (TimeLineID *next_tli);
extern PGDLLIMPORT walrcv_endstreaming_type walrcv_endstreaming; extern PGDLLIMPORT walrcv_endstreaming_type walrcv_endstreaming;
typedef int (*walrcv_receive_type) (char **buffer, int *wait_fd); typedef int (*walrcv_receive_type) (char **buffer, pgsocket *wait_fd);
extern PGDLLIMPORT walrcv_receive_type walrcv_receive; extern PGDLLIMPORT walrcv_receive_type walrcv_receive;
typedef void (*walrcv_send_type) (const char *buffer, int nbytes); typedef void (*walrcv_send_type) (const char *buffer, int nbytes);