@@ -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 ;
13291330 struct sockaddr_in serv_addr ;
13301331 int 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 {
13361341 write_msg (modulename , "pgpipe: could not create socket: error code %d\n" ,
13371342 WSAGetLastError ());
@@ -1363,13 +1368,18 @@ pgpipe(int handles[2])
13631368 closesocket (s );
13641369 return -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 {
13681377 write_msg (modulename , "pgpipe: could not create second socket: error code %d\n" ,
13691378 WSAGetLastError ());
13701379 closesocket (s );
13711380 return -1 ;
13721381 }
1382+ handles [1 ] = (int ) tmp_sock ;
13731383
13741384 if (connect (handles [1 ], (SOCKADDR * ) & serv_addr , len ) == SOCKET_ERROR )
13751385 {
@@ -1378,15 +1388,17 @@ pgpipe(int handles[2])
13781388 closesocket (s );
13791389 return -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 {
13831393 write_msg (modulename , "pgpipe: could not accept connection: error code %d\n" ,
13841394 WSAGetLastError ());
13851395 closesocket (handles [1 ]);
1386- handles [1 ] = INVALID_SOCKET ;
1396+ handles [1 ] = -1 ;
13871397 closesocket (s );
13881398 return -1 ;
13891399 }
1400+ handles [0 ] = (int ) tmp_sock ;
1401+
13901402 closesocket (s );
13911403 return 0 ;
13921404}
0 commit comments