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'.
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
connection. If a message was successfully read, returns its
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
pointer to the message payload is stored in *buffer. The returned
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,
char *slotname);
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_disconnect(void);
@ -472,14 +472,14 @@ libpqrcv_disconnect(void)
* until the next libpqrcv_* call.
*
* 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.
*
* ereports on error.
*/
static int
libpqrcv_receive(char **buffer, int *wait_fd)
libpqrcv_receive(char **buffer, pgsocket *wait_fd)
{
int rawlen;

View File

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

View File

@ -145,7 +145,7 @@ extern PGDLLIMPORT walrcv_startstreaming_type walrcv_startstreaming;
typedef void (*walrcv_endstreaming_type) (TimeLineID *next_tli);
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;
typedef void (*walrcv_send_type) (const char *buffer, int nbytes);