Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit5d305d8

Browse files
committed
libpq: use pgsocket for socket values, for portability
Previously, 'int' was used for socket values in libpq, but socket valuesare unsigned on Windows. This is a style correction.Initial patch and previous PGINVALID_SOCKET initial patch by JoelJacobson, modified by meReport from PVS-Studio
1 parentbe5f7ff commit5d305d8

File tree

6 files changed

+16
-32
lines changed

6 files changed

+16
-32
lines changed

‎src/interfaces/libpq/fe-connect.c

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -398,9 +398,9 @@ pqDropConnection(PGconn *conn)
398398
/* Drop any SSL state */
399399
pqsecure_close(conn);
400400
/* Close the socket itself */
401-
if (conn->sock>=0)
401+
if (conn->sock!=PGINVALID_SOCKET)
402402
closesocket(conn->sock);
403-
conn->sock=-1;
403+
conn->sock=PGINVALID_SOCKET;
404404
/* Discard any unread/unsent data */
405405
conn->inStart=conn->inCursor=conn->inEnd=0;
406406
conn->outCount=0;
@@ -1631,24 +1631,8 @@ PQconnectPoll(PGconn *conn)
16311631
addr_cur->ai_addrlen);
16321632
conn->raddr.salen=addr_cur->ai_addrlen;
16331633

1634-
/* Open a socket */
1635-
{
1636-
/*
1637-
* While we use 'pgsocket' as the socket type in the
1638-
* backend, we use 'int' for libpq socket values.
1639-
* This requires us to map PGINVALID_SOCKET to -1
1640-
* on Windows.
1641-
* See http://msdn.microsoft.com/en-us/library/windows/desktop/ms740516%28v=vs.85%29.aspx
1642-
*/
1643-
pgsocketsock=socket(addr_cur->ai_family,SOCK_STREAM,0);
1644-
#ifdefWIN32
1645-
if (sock==PGINVALID_SOCKET)
1646-
conn->sock=-1;
1647-
else
1648-
#endif
1649-
conn->sock=sock;
1650-
}
1651-
if (conn->sock==-1)
1634+
conn->sock=socket(addr_cur->ai_family,SOCK_STREAM,0);
1635+
if (conn->sock==PGINVALID_SOCKET)
16521636
{
16531637
/*
16541638
* ignore socket() failure if we have more addresses
@@ -2717,7 +2701,7 @@ makeEmptyPGconn(void)
27172701
conn->client_encoding=PG_SQL_ASCII;
27182702
conn->std_strings= false;/* unless server says differently */
27192703
conn->verbosity=PQERRORS_DEFAULT;
2720-
conn->sock=-1;
2704+
conn->sock=PGINVALID_SOCKET;
27212705
conn->auth_req_received= false;
27222706
conn->password_needed= false;
27232707
conn->dot_pgpass_used= false;
@@ -2882,7 +2866,7 @@ closePGconn(PGconn *conn)
28822866
* Note that the protocol doesn't allow us to send Terminate messages
28832867
* during the startup phase.
28842868
*/
2885-
if (conn->sock>=0&&conn->status==CONNECTION_OK)
2869+
if (conn->sock!=PGINVALID_SOCKET&&conn->status==CONNECTION_OK)
28862870
{
28872871
/*
28882872
* Try to send "close connection" message to backend. Ignore any
@@ -3103,7 +3087,7 @@ PQgetCancel(PGconn *conn)
31033087
if (!conn)
31043088
returnNULL;
31053089

3106-
if (conn->sock<0)
3090+
if (conn->sock==PGINVALID_SOCKET)
31073091
returnNULL;
31083092

31093093
cancel=malloc(sizeof(PGcancel));
@@ -3284,7 +3268,7 @@ PQrequestCancel(PGconn *conn)
32843268
if (!conn)
32853269
return FALSE;
32863270

3287-
if (conn->sock<0)
3271+
if (conn->sock==PGINVALID_SOCKET)
32883272
{
32893273
strlcpy(conn->errorMessage.data,
32903274
"PQrequestCancel() -- connection is not open\n",
@@ -5361,7 +5345,7 @@ PQsocket(const PGconn *conn)
53615345
{
53625346
if (!conn)
53635347
return-1;
5364-
returnconn->sock;
5348+
return(conn->sock!=PGINVALID_SOCKET) ?conn->sock :-1;
53655349
}
53665350

53675351
int

‎src/interfaces/libpq/fe-exec.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2549,7 +2549,7 @@ PQfn(PGconn *conn,
25492549
/* clear the error string */
25502550
resetPQExpBuffer(&conn->errorMessage);
25512551

2552-
if (conn->sock<0||conn->asyncStatus!=PGASYNC_IDLE||
2552+
if (conn->sock==PGINVALID_SOCKET||conn->asyncStatus!=PGASYNC_IDLE||
25532553
conn->result!=NULL)
25542554
{
25552555
printfPQExpBuffer(&conn->errorMessage,

‎src/interfaces/libpq/fe-misc.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,7 @@ pqReadData(PGconn *conn)
604604
intsomeread=0;
605605
intnread;
606606

607-
if (conn->sock<0)
607+
if (conn->sock==PGINVALID_SOCKET)
608608
{
609609
printfPQExpBuffer(&conn->errorMessage,
610610
libpq_gettext("connection not open\n"));
@@ -800,7 +800,7 @@ pqSendSome(PGconn *conn, int len)
800800
intremaining=conn->outCount;
801801
intresult=0;
802802

803-
if (conn->sock<0)
803+
if (conn->sock==PGINVALID_SOCKET)
804804
{
805805
printfPQExpBuffer(&conn->errorMessage,
806806
libpq_gettext("connection not open\n"));
@@ -1011,7 +1011,7 @@ pqSocketCheck(PGconn *conn, int forRead, int forWrite, time_t end_time)
10111011

10121012
if (!conn)
10131013
return-1;
1014-
if (conn->sock<0)
1014+
if (conn->sock==PGINVALID_SOCKET)
10151015
{
10161016
printfPQExpBuffer(&conn->errorMessage,
10171017
libpq_gettext("socket not open\n"));

‎src/interfaces/libpq/fe-protocol2.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1211,7 +1211,7 @@ pqGetline2(PGconn *conn, char *s, int maxlen)
12111211
{
12121212
intresult=1;/* return value if buffer overflows */
12131213

1214-
if (conn->sock<0||
1214+
if (conn->sock==PGINVALID_SOCKET||
12151215
conn->asyncStatus!=PGASYNC_COPY_OUT)
12161216
{
12171217
*s='\0';

‎src/interfaces/libpq/fe-protocol3.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1568,7 +1568,7 @@ pqGetline3(PGconn *conn, char *s, int maxlen)
15681568
{
15691569
intstatus;
15701570

1571-
if (conn->sock<0||
1571+
if (conn->sock==PGINVALID_SOCKET||
15721572
(conn->asyncStatus!=PGASYNC_COPY_OUT&&
15731573
conn->asyncStatus!=PGASYNC_COPY_BOTH)||
15741574
conn->copy_is_binary)

‎src/interfaces/libpq/libpq-int.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ struct pg_conn
365365

366366
/* Connection data */
367367
/* See PQconnectPoll() for how we use 'int' and not 'pgsocket'. */
368-
intsock;/*UnixFD for socket,-1 ifnot connected */
368+
pgsocketsock;/* FD for socket,PGINVALID_SOCKET ifunconnected */
369369
SockAddrladdr;/* Local address */
370370
SockAddrraddr;/* Remote address */
371371
ProtocolVersionpversion;/* FE/BE protocol version in use */

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp