@@ -1320,18 +1320,23 @@ readMessageFromPipe(int fd)
13201320/*
13211321 * This is a replacement version of pipe for Win32 which allows returned
13221322 * handles to be used in select(). Note that read/write calls must be replaced
1323- * with recv/send.
1323+ * with recv/send. "handles" have to be integers so we check for errors then
1324+ * cast to integers.
13241325 */
13251326static int
13261327pgpipe (int handles [2 ])
13271328{
1328- SOCKET s ;
1329+ pgsocket s , tmp_sock ;
13291330struct sockaddr_in serv_addr ;
13301331int len = sizeof (serv_addr );
13311332
1332- handles [0 ]= handles [1 ]= INVALID_SOCKET ;
1333+ /* We have to use the Unix socket invalid file descriptor value here. */
1334+ handles [0 ]= handles [1 ]= -1 ;
13331335
1334- if ((s = socket (AF_INET ,SOCK_STREAM ,0 ))== INVALID_SOCKET )
1336+ /*
1337+ * setup listen socket
1338+ */
1339+ if ((s = socket (AF_INET ,SOCK_STREAM ,0 ))== PGINVALID_SOCKET )
13351340{
13361341write_msg (modulename ,"pgpipe: could not create socket: error code %d\n" ,
13371342WSAGetLastError ());
@@ -1363,13 +1368,18 @@ pgpipe(int handles[2])
13631368closesocket (s );
13641369return -1 ;
13651370}
1366- if ((handles [1 ]= socket (AF_INET ,SOCK_STREAM ,0 ))== INVALID_SOCKET )
1371+
1372+ /*
1373+ * setup pipe handles
1374+ */
1375+ if ((tmp_sock = socket (AF_INET ,SOCK_STREAM ,0 ))== PGINVALID_SOCKET )
13671376{
13681377write_msg (modulename ,"pgpipe: could not create second socket: error code %d\n" ,
13691378WSAGetLastError ());
13701379closesocket (s );
13711380return -1 ;
13721381}
1382+ handles [1 ]= (int )tmp_sock ;
13731383
13741384if (connect (handles [1 ], (SOCKADDR * )& serv_addr ,len )== SOCKET_ERROR )
13751385{
@@ -1378,15 +1388,17 @@ pgpipe(int handles[2])
13781388closesocket (s );
13791389return -1 ;
13801390}
1381- if ((handles [ 0 ] = accept (s , (SOCKADDR * )& serv_addr ,& len ))== INVALID_SOCKET )
1391+ if ((tmp_sock = accept (s , (SOCKADDR * )& serv_addr ,& len ))== PGINVALID_SOCKET )
13821392{
13831393write_msg (modulename ,"pgpipe: could not accept connection: error code %d\n" ,
13841394WSAGetLastError ());
13851395closesocket (handles [1 ]);
1386- handles [1 ]= INVALID_SOCKET ;
1396+ handles [1 ]= -1 ;
13871397closesocket (s );
13881398return -1 ;
13891399}
1400+ handles [0 ]= (int )tmp_sock ;
1401+
13901402closesocket (s );
13911403return 0 ;
13921404}