corrected wrong use of O_CLOEXEC and FD_CLOEXEC in some files

This commit is contained in:
2018-10-22 03:46:19 +00:00
parent 54cd5401d5
commit ea85e91391
12 changed files with 257 additions and 179 deletions

View File

@ -141,7 +141,7 @@ static int urs_open (qse_httpd_t* httpd, qse_httpd_urs_t* urs)
urs->handle[2] = open_client_socket (httpd, AF_UNIX, type, 0);
#endif
if (qse_isvalidsckhnd(urs->handle[2]))
if (qse_is_sck_valid(urs->handle[2]))
{
#if defined(AF_UNIX)
qse_ntime_t now;
@ -160,15 +160,15 @@ static int urs_open (qse_httpd_t* httpd, qse_httpd_urs_t* urs)
if (bind (urs->handle[2], (struct sockaddr*)&dc->unix_bind_addr, QSE_SIZEOF(dc->unix_bind_addr)) <= -1)
{
qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM());
qse_closesckhnd (urs->handle[2]);
qse_close_sck (urs->handle[2]);
urs->handle[2] = QSE_INVALID_SCKHND;
}
#endif
}
if (!qse_isvalidsckhnd(urs->handle[0]) &&
!qse_isvalidsckhnd(urs->handle[1]) &&
!qse_isvalidsckhnd(urs->handle[2]))
if (!qse_is_sck_valid(urs->handle[0]) &&
!qse_is_sck_valid(urs->handle[1]) &&
!qse_is_sck_valid(urs->handle[2]))
{
/* don't set the error number here.
* open_client_socket() or bind() above should set the error number */
@ -207,26 +207,26 @@ static int urs_open (qse_httpd_t* httpd, qse_httpd_urs_t* urs)
if (proto == IPPROTO_SCTP)
{
/* TODO: error handling */
if (qse_isvalidsckhnd(urs->handle[0])) listen (urs->handle[0], 99);
if (qse_isvalidsckhnd(urs->handle[1])) listen (urs->handle[1], 99);
if (qse_is_sck_valid(urs->handle[0])) listen (urs->handle[0], 99);
if (qse_is_sck_valid(urs->handle[1])) listen (urs->handle[1], 99);
/* handle[2] is a unix socket. no special handling for SCTP */
}
#endif
urs->handle_count = 3;
if (qse_isvalidsckhnd(urs->handle[0])) urs->handle_mask |= (1 << 0);
if (qse_isvalidsckhnd(urs->handle[1])) urs->handle_mask |= (1 << 1);
if (qse_isvalidsckhnd(urs->handle[2])) urs->handle_mask |= (1 << 2);
if (qse_is_sck_valid(urs->handle[0])) urs->handle_mask |= (1 << 0);
if (qse_is_sck_valid(urs->handle[1])) urs->handle_mask |= (1 << 1);
if (qse_is_sck_valid(urs->handle[2])) urs->handle_mask |= (1 << 2);
urs->ctx = dc;
return 0;
oops:
if (qse_isvalidsckhnd(urs->handle[0])) qse_closesckhnd (urs->handle[0]);
if (qse_isvalidsckhnd(urs->handle[1])) qse_closesckhnd (urs->handle[1]);
if (qse_isvalidsckhnd(urs->handle[2]))
if (qse_is_sck_valid(urs->handle[0])) qse_close_sck (urs->handle[0]);
if (qse_is_sck_valid(urs->handle[1])) qse_close_sck (urs->handle[1]);
if (qse_is_sck_valid(urs->handle[2]))
{
qse_closesckhnd (urs->handle[2]);
qse_close_sck (urs->handle[2]);
#if defined(AF_UNIX)
QSE_UNLINK (dc->unix_bind_addr.sun_path);
#endif
@ -264,11 +264,11 @@ static void urs_close (qse_httpd_t* httpd, qse_httpd_urs_t* urs)
QSE_ASSERT (dc->req_count == 0);
if (qse_isvalidsckhnd(urs->handle[0])) qse_closesckhnd (urs->handle[0]);
if (qse_isvalidsckhnd(urs->handle[1])) qse_closesckhnd (urs->handle[1]);
if (qse_isvalidsckhnd(urs->handle[2]))
if (qse_is_sck_valid(urs->handle[0])) qse_close_sck (urs->handle[0]);
if (qse_is_sck_valid(urs->handle[1])) qse_close_sck (urs->handle[1]);
if (qse_is_sck_valid(urs->handle[2]))
{
qse_closesckhnd (urs->handle[2]);
qse_close_sck (urs->handle[2]);
#if defined(AF_UNIX)
QSE_UNLINK (dc->unix_bind_addr.sun_path);
#endif

View File

@ -830,7 +830,7 @@ static qse_sck_hnd_t open_client_socket (qse_httpd_t* httpd, int domain, int typ
int flag;
fd = socket (domain, type, proto);
if (!qse_isvalidsckhnd(fd))
if (!qse_is_sck_valid(fd))
{
qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM());
goto oops;
@ -871,7 +871,7 @@ static qse_sck_hnd_t open_client_socket (qse_httpd_t* httpd, int domain, int typ
#endif
*/
if (qse_setscknonblock (fd, 1) <= -1)
if (qse_set_sck_nonblock (fd, 1) <= -1)
{
qse_httpd_seterrnum (httpd, QSE_HTTPD_ESYSERR);
goto oops;
@ -912,7 +912,7 @@ static qse_sck_hnd_t open_client_socket (qse_httpd_t* httpd, int domain, int typ
return fd;
oops:
if (qse_isvalidsckhnd(fd)) qse_closesckhnd (fd);
if (qse_is_sck_valid(fd)) qse_close_sck (fd);
return QSE_INVALID_SCKHND;
}
@ -933,7 +933,7 @@ static int server_open (qse_httpd_t* httpd, qse_httpd_server_t* server)
}
fd = socket (qse_skadfamily(&addr), SOCK_STREAM, IPPROTO_TCP);
if (!qse_isvalidsckhnd(fd))
if (!qse_is_sck_valid(fd))
{
qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM());
goto oops;
@ -1078,7 +1078,7 @@ bind_ok:
goto oops;
}
if (qse_setscknonblock (fd, 1) <= -1)
if (qse_set_sck_nonblock (fd, 1) <= -1)
{
qse_httpd_seterrnum (httpd, QSE_HTTPD_ESYSERR);
goto oops;
@ -1088,13 +1088,13 @@ bind_ok:
return 0;
oops:
if (qse_isvalidsckhnd(fd)) qse_closesckhnd (fd);
if (qse_is_sck_valid(fd)) qse_close_sck (fd);
return -1;
}
static void server_close (qse_httpd_t* httpd, qse_httpd_server_t* server)
{
qse_closesckhnd (server->handle);
qse_close_sck (server->handle);
}
static int server_accept (
@ -1107,7 +1107,7 @@ static int server_accept (
addrlen = QSE_SIZEOF(addr);
fd = accept (server->handle, (struct sockaddr*)&addr, &addrlen);
if (!qse_isvalidsckhnd(fd))
if (!qse_is_sck_valid(fd))
{
qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM());
goto oops;
@ -1128,7 +1128,7 @@ static int server_accept (
if (flag >= 0) fcntl (fd, F_SETFD, flag | FD_CLOEXEC);
#endif
if (qse_setscknonblock (fd, 1) <= -1)
if (qse_set_sck_nonblock (fd, 1) <= -1)
{
qse_httpd_seterrnum (httpd, QSE_HTTPD_ESYSERR);
goto oops;
@ -1194,7 +1194,7 @@ static int server_accept (
return 0;
oops:
if (qse_isvalidsckhnd(fd)) qse_closesckhnd (fd);
if (qse_is_sck_valid(fd)) qse_close_sck (fd);
return -1;
}
@ -1202,13 +1202,13 @@ oops:
static void client_close (qse_httpd_t* httpd, qse_httpd_client_t* client)
{
qse_shutsckhnd (client->handle, QSE_SHUTSCKHND_RW);
qse_closesckhnd (client->handle);
qse_shut_sck (client->handle, QSE_SHUTSCKHND_RW);
qse_close_sck (client->handle);
}
static void client_shutdown (qse_httpd_t* httpd, qse_httpd_client_t* client)
{
qse_shutsckhnd (client->handle, QSE_SHUTSCKHND_RW);
qse_shut_sck (client->handle, QSE_SHUTSCKHND_RW);
}
static qse_ssize_t client_recv (
@ -1424,7 +1424,7 @@ static int peer_open (qse_httpd_t* httpd, qse_httpd_peer_t* peer)
bindaddrsize = qse_nwadtoskad (&peer->local, &bindaddr);
fd = socket (qse_skadfamily(&connaddr), SOCK_STREAM, IPPROTO_TCP);
if (!qse_isvalidsckhnd(fd))
if (!qse_is_sck_valid(fd))
{
qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM());
goto oops;
@ -1456,7 +1456,7 @@ static int peer_open (qse_httpd_t* httpd, qse_httpd_peer_t* peer)
if (flag >= 0) fcntl (fd, F_SETFD, flag | FD_CLOEXEC);
#endif
if (qse_setscknonblock (fd, 1) <= -1)
if (qse_set_sck_nonblock (fd, 1) <= -1)
{
qse_httpd_seterrnum (httpd, QSE_HTTPD_ESYSERR);
goto oops;
@ -1561,7 +1561,7 @@ oops:
#if defined(USE_SSL)
if (ssl) SSL_free (ssl);
#endif
if (qse_isvalidsckhnd(fd)) qse_closesckhnd (fd);
if (qse_is_sck_valid(fd)) qse_close_sck (fd);
return -1;
/* -------------------------------------------------------------------- */
@ -1575,7 +1575,7 @@ static void peer_close (qse_httpd_t* httpd, qse_httpd_peer_t* peer)
SSL_free (HANDLE_TO_SSL(peer->handle2));
#endif
}
qse_closesckhnd (peer->handle);
qse_close_sck (peer->handle);
}
static int is_peer_socket_connected (qse_httpd_t* httpd, qse_httpd_peer_t* peer)