mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
utils: Add convenience function for setting fd flags
There are many places in the code base where we ignore the return value of fcntl() when getting/setting file descriptior flags. This patch introduces a convenience function that allows setting or clearing file descriptor flags and will also log an error on failure for later analysis. Change-Id: I8b81901e1b1bd537ca632567cdb408931c6eded7
This commit is contained in:
@@ -805,7 +805,7 @@ void *ast_tcptls_server_root(void *data)
|
||||
pthread_t launched;
|
||||
|
||||
for (;;) {
|
||||
int i, flags;
|
||||
int i;
|
||||
|
||||
if (desc->periodic_fn) {
|
||||
desc->periodic_fn(desc);
|
||||
@@ -843,8 +843,7 @@ void *ast_tcptls_server_root(void *data)
|
||||
close(fd);
|
||||
continue;
|
||||
}
|
||||
flags = fcntl(fd, F_GETFL);
|
||||
fcntl(fd, F_SETFL, flags & ~O_NONBLOCK);
|
||||
ast_fd_clear_flags(fd, O_NONBLOCK);
|
||||
tcptls_session->fd = fd;
|
||||
tcptls_session->parent = desc;
|
||||
ast_sockaddr_copy(&tcptls_session->remote_address, &addr);
|
||||
@@ -1061,7 +1060,6 @@ void ast_ssl_teardown(struct ast_tls_config *cfg)
|
||||
struct ast_tcptls_session_instance *ast_tcptls_client_start(struct ast_tcptls_session_instance *tcptls_session)
|
||||
{
|
||||
struct ast_tcptls_session_args *desc;
|
||||
int flags;
|
||||
|
||||
if (!(desc = tcptls_session->parent)) {
|
||||
goto client_start_error;
|
||||
@@ -1075,8 +1073,7 @@ struct ast_tcptls_session_instance *ast_tcptls_client_start(struct ast_tcptls_se
|
||||
goto client_start_error;
|
||||
}
|
||||
|
||||
flags = fcntl(desc->accept_fd, F_GETFL);
|
||||
fcntl(desc->accept_fd, F_SETFL, flags & ~O_NONBLOCK);
|
||||
ast_fd_clear_flags(desc->accept_fd, O_NONBLOCK);
|
||||
|
||||
if (desc->tls_cfg) {
|
||||
desc->tls_cfg->enabled = 1;
|
||||
@@ -1164,7 +1161,6 @@ error:
|
||||
|
||||
void ast_tcptls_server_start(struct ast_tcptls_session_args *desc)
|
||||
{
|
||||
int flags;
|
||||
int x = 1;
|
||||
int tls_changed = 0;
|
||||
|
||||
@@ -1267,8 +1263,7 @@ void ast_tcptls_server_start(struct ast_tcptls_session_args *desc)
|
||||
ast_log(LOG_ERROR, "Unable to listen for %s!\n", desc->name);
|
||||
goto error;
|
||||
}
|
||||
flags = fcntl(desc->accept_fd, F_GETFL);
|
||||
fcntl(desc->accept_fd, F_SETFL, flags | O_NONBLOCK);
|
||||
ast_fd_set_flags(desc->accept_fd, O_NONBLOCK);
|
||||
if (ast_pthread_create_background(&desc->master, NULL, desc->accept_fn, desc)) {
|
||||
ast_log(LOG_ERROR, "Unable to launch thread for %s on %s: %s\n",
|
||||
desc->name,
|
||||
|
Reference in New Issue
Block a user