1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-30 11:03:19 +03:00

Remove check for accept() argument types

This check was used to accommodate a staggering variety in particular
in the type of the third argument of accept().  This is no longer of
concern on currently supported systems.  We can just use socklen_t in
the code and put in a simple check that substitutes int for socklen_t
if it's missing, to cover the few stragglers.

Reviewed-by: Andres Freund <andres@anarazel.de>
Discussion: https://www.postgresql.org/message-id/3538f4c4-1886-64f2-dcff-aaad8267fb82@enterprisedb.com
This commit is contained in:
Peter Eisentraut
2021-11-09 15:20:47 +01:00
parent 4cd046c203
commit ee3a1a5b63
13 changed files with 31 additions and 178 deletions

View File

@ -3026,7 +3026,7 @@ PerformRadiusTransaction(const char *server, const char *secret, const char *por
struct addrinfo hint;
struct addrinfo *serveraddrs;
int port;
ACCEPT_TYPE_ARG3 addrsize;
socklen_t addrsize;
fd_set fdset;
struct timeval endtime;
int i,

View File

@ -1632,7 +1632,7 @@ pq_getkeepalivesidle(Port *port)
if (port->default_keepalives_idle == 0)
{
#ifndef WIN32
ACCEPT_TYPE_ARG3 size = sizeof(port->default_keepalives_idle);
socklen_t size = sizeof(port->default_keepalives_idle);
if (getsockopt(port->sock, IPPROTO_TCP, PG_TCP_KEEPALIVE_IDLE,
(char *) &port->default_keepalives_idle,
@ -1717,7 +1717,7 @@ pq_getkeepalivesinterval(Port *port)
if (port->default_keepalives_interval == 0)
{
#ifndef WIN32
ACCEPT_TYPE_ARG3 size = sizeof(port->default_keepalives_interval);
socklen_t size = sizeof(port->default_keepalives_interval);
if (getsockopt(port->sock, IPPROTO_TCP, TCP_KEEPINTVL,
(char *) &port->default_keepalives_interval,
@ -1800,7 +1800,7 @@ pq_getkeepalivescount(Port *port)
if (port->default_keepalives_count == 0)
{
ACCEPT_TYPE_ARG3 size = sizeof(port->default_keepalives_count);
socklen_t size = sizeof(port->default_keepalives_count);
if (getsockopt(port->sock, IPPROTO_TCP, TCP_KEEPCNT,
(char *) &port->default_keepalives_count,
@ -1875,7 +1875,7 @@ pq_gettcpusertimeout(Port *port)
if (port->default_tcp_user_timeout == 0)
{
ACCEPT_TYPE_ARG3 size = sizeof(port->default_tcp_user_timeout);
socklen_t size = sizeof(port->default_tcp_user_timeout);
if (getsockopt(port->sock, IPPROTO_TCP, TCP_USER_TIMEOUT,
(char *) &port->default_tcp_user_timeout,

View File

@ -391,7 +391,7 @@ static void pgstat_recv_tempfile(PgStat_MsgTempFile *msg, int len);
void
pgstat_init(void)
{
ACCEPT_TYPE_ARG3 alen;
socklen_t alen;
struct addrinfo *addrs = NULL,
*addr,
hints;
@ -624,7 +624,7 @@ retry2:
{
int old_rcvbuf;
int new_rcvbuf;
ACCEPT_TYPE_ARG3 rcvbufsize = sizeof(old_rcvbuf);
socklen_t rcvbufsize = sizeof(old_rcvbuf);
if (getsockopt(pgStatSock, SOL_SOCKET, SO_RCVBUF,
(char *) &old_rcvbuf, &rcvbufsize) < 0)

View File

@ -62,7 +62,7 @@ struct sockaddr_storage
typedef struct
{
struct sockaddr_storage addr;
ACCEPT_TYPE_ARG3 salen;
socklen_t salen;
} SockAddr;
/* Configure the UNIX socket location for the well known port. */

View File

@ -1,17 +1,5 @@
/* src/include/pg_config.h.in. Generated from configure.ac by autoheader. */
/* Define to the type of arg 1 of 'accept' */
#undef ACCEPT_TYPE_ARG1
/* Define to the type of arg 2 of 'accept' */
#undef ACCEPT_TYPE_ARG2
/* Define to the type of arg 3 of 'accept' */
#undef ACCEPT_TYPE_ARG3
/* Define to the return type of 'accept' */
#undef ACCEPT_TYPE_RETURN
/* Define if building universal (internal helper macro) */
#undef AC_APPLE_UNIVERSAL_BUILD
@ -518,6 +506,9 @@
/* Define to 1 if you have the `shm_open' function. */
#undef HAVE_SHM_OPEN
/* Define to 1 if the system has the type `socklen_t'. */
#undef HAVE_SOCKLEN_T
/* Define to 1 if you have spinlocks. */
#undef HAVE_SPINLOCKS

View File

@ -37,6 +37,10 @@ typedef SOCKET pgsocket;
#define PGINVALID_SOCKET INVALID_SOCKET
#endif
#ifndef HAVE_SOCKLEN_T
typedef int socklen_t;
#endif
/* non-blocking */
extern bool pg_set_noblock(pgsocket sock);
extern bool pg_set_block(pgsocket sock);

View File

@ -2744,7 +2744,7 @@ keep_going: /* We will come back to here until there is
case CONNECTION_STARTED:
{
ACCEPT_TYPE_ARG3 optlen = sizeof(optval);
socklen_t optlen = sizeof(optval);
/*
* Write ready, since we've made it here, so the connection

View File

@ -37,7 +37,7 @@ getpeereid(int sock, uid_t *uid, gid_t *gid)
#if defined(SO_PEERCRED)
/* Linux: use getsockopt(SO_PEERCRED) */
struct ucred peercred;
ACCEPT_TYPE_ARG3 so_len = sizeof(peercred);
socklen_t so_len = sizeof(peercred);
if (getsockopt(sock, SOL_SOCKET, SO_PEERCRED, &peercred, &so_len) != 0 ||
so_len != sizeof(peercred))
@ -48,7 +48,7 @@ getpeereid(int sock, uid_t *uid, gid_t *gid)
#elif defined(LOCAL_PEERCRED)
/* Debian with FreeBSD kernel: use getsockopt(LOCAL_PEERCRED) */
struct xucred peercred;
ACCEPT_TYPE_ARG3 so_len = sizeof(peercred);
socklen_t so_len = sizeof(peercred);
if (getsockopt(sock, 0, LOCAL_PEERCRED, &peercred, &so_len) != 0 ||
so_len != sizeof(peercred) ||

View File

@ -205,10 +205,6 @@ sub GenerateFiles
# Every symbol in pg_config.h.in must be accounted for here. Set
# to undef if the symbol should not be defined.
my %define = (
ACCEPT_TYPE_ARG1 => 'unsigned int',
ACCEPT_TYPE_ARG2 => 'struct sockaddr *',
ACCEPT_TYPE_ARG3 => 'int',
ACCEPT_TYPE_RETURN => 'unsigned int PASCAL',
ALIGNOF_DOUBLE => 8,
ALIGNOF_INT => 4,
ALIGNOF_LONG => 4,
@ -365,6 +361,7 @@ sub GenerateFiles
HAVE_SETPROCTITLE_FAST => undef,
HAVE_SETSID => undef,
HAVE_SHM_OPEN => undef,
HAVE_SOCKLEN_T => 1,
HAVE_SPINLOCKS => 1,
HAVE_SRANDOM => undef,
HAVE_STDBOOL_H => 1,