diff --git a/src/backend/replication/README b/src/backend/replication/README
index 419a2d74d734d17696a0a73774f7e78070791337..ad4864dbbeb8bfdd5c8e38f9e65daf7424d29944 100644
--- a/src/backend/replication/README
+++ b/src/backend/replication/README
@@ -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
diff --git a/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c b/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
index a3bec498fa073a32be10784c931f141421a87161..b61e39d7d8a70263f90505769f8bc0701b3cfea3 100644
--- a/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
+++ b/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
@@ -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;
 
diff --git a/src/backend/replication/walreceiver.c b/src/backend/replication/walreceiver.c
index 057c250793d2cf07aa606088e210dd11b0197740..6fd5952be711685c24c636b883f0136f56c9a659 100644
--- a/src/backend/replication/walreceiver.c
+++ b/src/backend/replication/walreceiver.c
@@ -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;
 
 				/*
diff --git a/src/include/replication/walreceiver.h b/src/include/replication/walreceiver.h
index 36bcb471720806b12eb633e492445963bda3ba72..c87e7a80ad19bdfa63031b3ac2da7232900eda2f 100644
--- a/src/include/replication/walreceiver.h
+++ b/src/include/replication/walreceiver.h
@@ -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);