mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 00:03:57 -04:00 
			
		
		
		
	libpq: use pgsocket for socket values, for portability
Previously, 'int' was used for socket values in libpq, but socket values are unsigned on Windows. This is a style correction. Initial patch and previous PGINVALID_SOCKET initial patch by Joel Jacobson, modified by me Report from PVS-Studio
This commit is contained in:
		
							parent
							
								
									be5f7fff47
								
							
						
					
					
						commit
						5d305d86bd
					
				| @ -398,9 +398,9 @@ pqDropConnection(PGconn *conn) | |||||||
| 	/* Drop any SSL state */ | 	/* Drop any SSL state */ | ||||||
| 	pqsecure_close(conn); | 	pqsecure_close(conn); | ||||||
| 	/* Close the socket itself */ | 	/* Close the socket itself */ | ||||||
| 	if (conn->sock >= 0) | 	if (conn->sock != PGINVALID_SOCKET) | ||||||
| 		closesocket(conn->sock); | 		closesocket(conn->sock); | ||||||
| 	conn->sock = -1; | 	conn->sock = PGINVALID_SOCKET; | ||||||
| 	/* Discard any unread/unsent data */ | 	/* Discard any unread/unsent data */ | ||||||
| 	conn->inStart = conn->inCursor = conn->inEnd = 0; | 	conn->inStart = conn->inCursor = conn->inEnd = 0; | ||||||
| 	conn->outCount = 0; | 	conn->outCount = 0; | ||||||
| @ -1631,24 +1631,8 @@ keep_going:						/* We will come back to here until there is | |||||||
| 						   addr_cur->ai_addrlen); | 						   addr_cur->ai_addrlen); | ||||||
| 					conn->raddr.salen = addr_cur->ai_addrlen; | 					conn->raddr.salen = addr_cur->ai_addrlen; | ||||||
| 
 | 
 | ||||||
| 					/* Open a socket */ | 					conn->sock = socket(addr_cur->ai_family, SOCK_STREAM, 0); | ||||||
| 					{ | 					if (conn->sock == PGINVALID_SOCKET) | ||||||
| 						/*
 |  | ||||||
| 						 * While we use 'pgsocket' as the socket type in the |  | ||||||
| 						 * backend, we use 'int' for libpq socket values. |  | ||||||
| 						 * This requires us to map PGINVALID_SOCKET to -1 |  | ||||||
| 						 * on Windows. |  | ||||||
| 						 * See http://msdn.microsoft.com/en-us/library/windows/desktop/ms740516%28v=vs.85%29.aspx
 |  | ||||||
| 						 */ |  | ||||||
| 						pgsocket sock = socket(addr_cur->ai_family, SOCK_STREAM, 0); |  | ||||||
| #ifdef WIN32 |  | ||||||
| 						if (sock == PGINVALID_SOCKET) |  | ||||||
| 							conn->sock = -1; |  | ||||||
| 						else |  | ||||||
| #endif |  | ||||||
| 							conn->sock = sock; |  | ||||||
| 					} |  | ||||||
| 					if (conn->sock == -1) |  | ||||||
| 					{ | 					{ | ||||||
| 						/*
 | 						/*
 | ||||||
| 						 * ignore socket() failure if we have more addresses | 						 * ignore socket() failure if we have more addresses | ||||||
| @ -2717,7 +2701,7 @@ makeEmptyPGconn(void) | |||||||
| 	conn->client_encoding = PG_SQL_ASCII; | 	conn->client_encoding = PG_SQL_ASCII; | ||||||
| 	conn->std_strings = false;	/* unless server says differently */ | 	conn->std_strings = false;	/* unless server says differently */ | ||||||
| 	conn->verbosity = PQERRORS_DEFAULT; | 	conn->verbosity = PQERRORS_DEFAULT; | ||||||
| 	conn->sock = -1; | 	conn->sock = PGINVALID_SOCKET; | ||||||
| 	conn->auth_req_received = false; | 	conn->auth_req_received = false; | ||||||
| 	conn->password_needed = false; | 	conn->password_needed = false; | ||||||
| 	conn->dot_pgpass_used = false; | 	conn->dot_pgpass_used = false; | ||||||
| @ -2882,7 +2866,7 @@ closePGconn(PGconn *conn) | |||||||
| 	 * Note that the protocol doesn't allow us to send Terminate messages | 	 * Note that the protocol doesn't allow us to send Terminate messages | ||||||
| 	 * during the startup phase. | 	 * during the startup phase. | ||||||
| 	 */ | 	 */ | ||||||
| 	if (conn->sock >= 0 && conn->status == CONNECTION_OK) | 	if (conn->sock != PGINVALID_SOCKET && conn->status == CONNECTION_OK) | ||||||
| 	{ | 	{ | ||||||
| 		/*
 | 		/*
 | ||||||
| 		 * Try to send "close connection" message to backend. Ignore any | 		 * Try to send "close connection" message to backend. Ignore any | ||||||
| @ -3103,7 +3087,7 @@ PQgetCancel(PGconn *conn) | |||||||
| 	if (!conn) | 	if (!conn) | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 
 | 
 | ||||||
| 	if (conn->sock < 0) | 	if (conn->sock == PGINVALID_SOCKET) | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 
 | 
 | ||||||
| 	cancel = malloc(sizeof(PGcancel)); | 	cancel = malloc(sizeof(PGcancel)); | ||||||
| @ -3284,7 +3268,7 @@ PQrequestCancel(PGconn *conn) | |||||||
| 	if (!conn) | 	if (!conn) | ||||||
| 		return FALSE; | 		return FALSE; | ||||||
| 
 | 
 | ||||||
| 	if (conn->sock < 0) | 	if (conn->sock == PGINVALID_SOCKET) | ||||||
| 	{ | 	{ | ||||||
| 		strlcpy(conn->errorMessage.data, | 		strlcpy(conn->errorMessage.data, | ||||||
| 				"PQrequestCancel() -- connection is not open\n", | 				"PQrequestCancel() -- connection is not open\n", | ||||||
| @ -5361,7 +5345,7 @@ PQsocket(const PGconn *conn) | |||||||
| { | { | ||||||
| 	if (!conn) | 	if (!conn) | ||||||
| 		return -1; | 		return -1; | ||||||
| 	return conn->sock; | 	return (conn->sock != PGINVALID_SOCKET) ? conn->sock : -1; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int | int | ||||||
|  | |||||||
| @ -2549,7 +2549,7 @@ PQfn(PGconn *conn, | |||||||
| 	/* clear the error string */ | 	/* clear the error string */ | ||||||
| 	resetPQExpBuffer(&conn->errorMessage); | 	resetPQExpBuffer(&conn->errorMessage); | ||||||
| 
 | 
 | ||||||
| 	if (conn->sock < 0 || conn->asyncStatus != PGASYNC_IDLE || | 	if (conn->sock == PGINVALID_SOCKET || conn->asyncStatus != PGASYNC_IDLE || | ||||||
| 		conn->result != NULL) | 		conn->result != NULL) | ||||||
| 	{ | 	{ | ||||||
| 		printfPQExpBuffer(&conn->errorMessage, | 		printfPQExpBuffer(&conn->errorMessage, | ||||||
|  | |||||||
| @ -604,7 +604,7 @@ pqReadData(PGconn *conn) | |||||||
| 	int			someread = 0; | 	int			someread = 0; | ||||||
| 	int			nread; | 	int			nread; | ||||||
| 
 | 
 | ||||||
| 	if (conn->sock < 0) | 	if (conn->sock == PGINVALID_SOCKET) | ||||||
| 	{ | 	{ | ||||||
| 		printfPQExpBuffer(&conn->errorMessage, | 		printfPQExpBuffer(&conn->errorMessage, | ||||||
| 						  libpq_gettext("connection not open\n")); | 						  libpq_gettext("connection not open\n")); | ||||||
| @ -800,7 +800,7 @@ pqSendSome(PGconn *conn, int len) | |||||||
| 	int			remaining = conn->outCount; | 	int			remaining = conn->outCount; | ||||||
| 	int			result = 0; | 	int			result = 0; | ||||||
| 
 | 
 | ||||||
| 	if (conn->sock < 0) | 	if (conn->sock == PGINVALID_SOCKET) | ||||||
| 	{ | 	{ | ||||||
| 		printfPQExpBuffer(&conn->errorMessage, | 		printfPQExpBuffer(&conn->errorMessage, | ||||||
| 						  libpq_gettext("connection not open\n")); | 						  libpq_gettext("connection not open\n")); | ||||||
| @ -1011,7 +1011,7 @@ pqSocketCheck(PGconn *conn, int forRead, int forWrite, time_t end_time) | |||||||
| 
 | 
 | ||||||
| 	if (!conn) | 	if (!conn) | ||||||
| 		return -1; | 		return -1; | ||||||
| 	if (conn->sock < 0) | 	if (conn->sock == PGINVALID_SOCKET) | ||||||
| 	{ | 	{ | ||||||
| 		printfPQExpBuffer(&conn->errorMessage, | 		printfPQExpBuffer(&conn->errorMessage, | ||||||
| 						  libpq_gettext("socket not open\n")); | 						  libpq_gettext("socket not open\n")); | ||||||
|  | |||||||
| @ -1211,7 +1211,7 @@ pqGetline2(PGconn *conn, char *s, int maxlen) | |||||||
| { | { | ||||||
| 	int			result = 1;		/* return value if buffer overflows */ | 	int			result = 1;		/* return value if buffer overflows */ | ||||||
| 
 | 
 | ||||||
| 	if (conn->sock < 0 || | 	if (conn->sock == PGINVALID_SOCKET || | ||||||
| 		conn->asyncStatus != PGASYNC_COPY_OUT) | 		conn->asyncStatus != PGASYNC_COPY_OUT) | ||||||
| 	{ | 	{ | ||||||
| 		*s = '\0'; | 		*s = '\0'; | ||||||
|  | |||||||
| @ -1568,7 +1568,7 @@ pqGetline3(PGconn *conn, char *s, int maxlen) | |||||||
| { | { | ||||||
| 	int			status; | 	int			status; | ||||||
| 
 | 
 | ||||||
| 	if (conn->sock < 0 || | 	if (conn->sock == PGINVALID_SOCKET || | ||||||
| 		(conn->asyncStatus != PGASYNC_COPY_OUT && | 		(conn->asyncStatus != PGASYNC_COPY_OUT && | ||||||
| 		 conn->asyncStatus != PGASYNC_COPY_BOTH) || | 		 conn->asyncStatus != PGASYNC_COPY_BOTH) || | ||||||
| 		conn->copy_is_binary) | 		conn->copy_is_binary) | ||||||
|  | |||||||
| @ -365,7 +365,7 @@ struct pg_conn | |||||||
| 
 | 
 | ||||||
| 	/* Connection data */ | 	/* Connection data */ | ||||||
| 	/* See PQconnectPoll() for how we use 'int' and not 'pgsocket'. */ | 	/* See PQconnectPoll() for how we use 'int' and not 'pgsocket'. */ | ||||||
| 	int			sock;			/* Unix FD for socket, -1 if not connected */ | 	pgsocket	sock;			/* FD for socket, PGINVALID_SOCKET if unconnected */ | ||||||
| 	SockAddr	laddr;			/* Local address */ | 	SockAddr	laddr;			/* Local address */ | ||||||
| 	SockAddr	raddr;			/* Remote address */ | 	SockAddr	raddr;			/* Remote address */ | ||||||
| 	ProtocolVersion pversion;	/* FE/BE protocol version in use */ | 	ProtocolVersion pversion;	/* FE/BE protocol version in use */ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user