callback-job: Replace return_false() in constructors with dedicated function
Besides being clearer, this fixes issues with GCC 15. The latter uses C23 by default, which changes the meaning of function declarations without parameters such as bool return false(); Instead of "this function takes an unknown number of arguments", this now equals (void), that is, "this function takes no arguments". So we run into incompatible pointer type warnings all over when using such functions. They could be cast to (void*) but this seems the cleaner solution for this use case.
This commit is contained in:
@@ -585,7 +585,7 @@ cmd_connection_t *cmd_connection_create()
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create_with_prio(
|
||||
(callback_job_cb_t)initiate, this, NULL,
|
||||
(callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL));
|
||||
callback_job_cancel_thread, JOB_PRIO_CRITICAL));
|
||||
|
||||
return &this->public;
|
||||
}
|
||||
|
||||
@@ -340,7 +340,7 @@ METHOD(android_dns_proxy_t, handle, bool,
|
||||
skt);
|
||||
lib->scheduler->schedule_job(lib->scheduler,
|
||||
(job_t*)callback_job_create(handle_timeout, skt,
|
||||
NULL, (callback_job_cancel_t)return_false), SOCKET_TIMEOUT);
|
||||
NULL, callback_job_cancel_thread), SOCKET_TIMEOUT);
|
||||
}
|
||||
skt->last_use = time_monotonic(NULL);
|
||||
if (sendto(skt->fd, data.ptr, data.len, 0, dst->get_sockaddr(dst),
|
||||
|
||||
@@ -359,7 +359,7 @@ static bool setup_tun_device(private_android_service_t *this,
|
||||
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create((callback_job_cb_t)handle_plain, this,
|
||||
NULL, (callback_job_cancel_t)return_false));
|
||||
NULL, callback_job_cancel_thread));
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@@ -600,7 +600,7 @@ METHOD(listener_t, alert, bool,
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create_with_prio(
|
||||
(callback_job_cb_t)reestablish, id, free,
|
||||
(callback_job_cancel_t)return_false, JOB_PRIO_HIGH));
|
||||
callback_job_cancel_thread, JOB_PRIO_HIGH));
|
||||
break;
|
||||
}
|
||||
case ALERT_PEER_INIT_UNREACHABLE:
|
||||
@@ -619,7 +619,7 @@ METHOD(listener_t, alert, bool,
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create_with_prio(
|
||||
(callback_job_cb_t)terminate, id, free,
|
||||
(callback_job_cancel_t)return_false, JOB_PRIO_HIGH));
|
||||
callback_job_cancel_thread, JOB_PRIO_HIGH));
|
||||
stay_registered = FALSE;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -737,7 +737,7 @@ receiver_t *receiver_create()
|
||||
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create_with_prio((callback_job_cb_t)receive_packets,
|
||||
this, NULL, (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL));
|
||||
this, NULL, callback_job_cancel_thread, JOB_PRIO_CRITICAL));
|
||||
|
||||
return &this->public;
|
||||
}
|
||||
|
||||
@@ -216,7 +216,7 @@ sender_t * sender_create()
|
||||
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create_with_prio((callback_job_cb_t)send_packets,
|
||||
this, NULL, (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL));
|
||||
this, NULL, callback_job_cancel_thread, JOB_PRIO_CRITICAL));
|
||||
|
||||
return &this->public;
|
||||
}
|
||||
|
||||
@@ -227,7 +227,7 @@ METHOD(kernel_listener_t, roam, bool,
|
||||
{
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create((callback_job_cb_t)update_bypass, this,
|
||||
NULL, (callback_job_cancel_t)return_false));
|
||||
NULL, callback_job_cancel_thread));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -269,7 +269,7 @@ METHOD(bypass_lan_listener_t, reload_interfaces, void,
|
||||
this->mutex->unlock(this->mutex);
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create((callback_job_cb_t)update_bypass, this,
|
||||
NULL, (callback_job_cancel_t)return_false));
|
||||
NULL, callback_job_cancel_thread));
|
||||
}
|
||||
|
||||
METHOD(bypass_lan_listener_t, destroy, void,
|
||||
|
||||
@@ -706,7 +706,7 @@ static void schedule_interim(private_eap_radius_accounting_t *this,
|
||||
(job_t*)callback_job_create_with_prio(
|
||||
(callback_job_cb_t)send_interim,
|
||||
data, (void*)destroy_interim_data,
|
||||
(callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL), tv);
|
||||
callback_job_cancel_thread, JOB_PRIO_CRITICAL), tv);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -445,7 +445,7 @@ void eap_radius_handle_timeout(ike_sa_id_t *id)
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create_with_prio(
|
||||
(callback_job_cb_t)delete_all_async, NULL, NULL,
|
||||
(callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL));
|
||||
callback_job_cancel_thread, JOB_PRIO_CRITICAL));
|
||||
}
|
||||
else if (id)
|
||||
{
|
||||
|
||||
@@ -199,6 +199,6 @@ ha_ctl_t *ha_ctl_create(ha_segments_t *segments, ha_cache_t *cache)
|
||||
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create_with_prio((callback_job_cb_t)dispatch_fifo,
|
||||
this, NULL, (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL));
|
||||
this, NULL, callback_job_cancel_thread, JOB_PRIO_CRITICAL));
|
||||
return &this->public;
|
||||
}
|
||||
|
||||
@@ -1184,7 +1184,7 @@ ha_dispatcher_t *ha_dispatcher_create(ha_socket_t *socket,
|
||||
);
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create_with_prio((callback_job_cb_t)dispatch, this,
|
||||
NULL, (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL));
|
||||
NULL, callback_job_cancel_thread, JOB_PRIO_CRITICAL));
|
||||
|
||||
return &this->public;
|
||||
}
|
||||
|
||||
@@ -316,7 +316,7 @@ static void start_watchdog(private_ha_segments_t *this)
|
||||
this->heartbeat_active = TRUE;
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create_with_prio((callback_job_cb_t)watchdog, this,
|
||||
NULL, (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL));
|
||||
NULL, callback_job_cancel_thread, JOB_PRIO_CRITICAL));
|
||||
}
|
||||
|
||||
METHOD(ha_segments_t, handle_status, void,
|
||||
@@ -404,7 +404,7 @@ static void start_heartbeat(private_ha_segments_t *this)
|
||||
{
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create_with_prio((callback_job_cb_t)send_status,
|
||||
this, NULL, (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL));
|
||||
this, NULL, callback_job_cancel_thread, JOB_PRIO_CRITICAL));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -451,7 +451,7 @@ static void start_autobalance(private_ha_segments_t *this)
|
||||
DBG1(DBG_CFG, "scheduling HA autobalance every %ds", this->autobalance);
|
||||
lib->scheduler->schedule_job(lib->scheduler,
|
||||
(job_t*)callback_job_create_with_prio((callback_job_cb_t)autobalance,
|
||||
this, NULL, (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL),
|
||||
this, NULL, callback_job_cancel_thread, JOB_PRIO_CRITICAL),
|
||||
this->autobalance);
|
||||
}
|
||||
|
||||
|
||||
@@ -337,7 +337,7 @@ kernel_libipsec_esp_handler_t *kernel_libipsec_esp_handler_create()
|
||||
}
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create(send_esp, this, NULL,
|
||||
(callback_job_cancel_t)return_false));
|
||||
callback_job_cancel_thread));
|
||||
return &this->public;
|
||||
}
|
||||
|
||||
|
||||
@@ -364,7 +364,7 @@ kernel_libipsec_router_t *kernel_libipsec_router_create()
|
||||
charon->receiver->add_esp_cb(charon->receiver, receiver_esp_cb, NULL);
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create((callback_job_cb_t)handle_plain, this,
|
||||
NULL, (callback_job_cancel_t)return_false));
|
||||
NULL, callback_job_cancel_thread));
|
||||
|
||||
router = &this->public;
|
||||
return &this->public;
|
||||
|
||||
@@ -710,7 +710,7 @@ static job_requeue_t dispatch(private_smp_t *this)
|
||||
fdp = malloc_thing(int);
|
||||
*fdp = fd;
|
||||
job = callback_job_create((callback_job_cb_t)process, fdp, free,
|
||||
(callback_job_cancel_t)return_false);
|
||||
callback_job_cancel_thread);
|
||||
lib->processor->queue_job(lib->processor, (job_t*)job);
|
||||
|
||||
return JOB_REQUEUE_DIRECT;
|
||||
@@ -800,7 +800,7 @@ plugin_t *smp_plugin_create()
|
||||
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create_with_prio((callback_job_cb_t)dispatch, this,
|
||||
NULL, (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL));
|
||||
NULL, callback_job_cancel_thread, JOB_PRIO_CRITICAL));
|
||||
|
||||
return &this->public.plugin;
|
||||
}
|
||||
|
||||
@@ -210,7 +210,7 @@ METHOD(tnc_pdp_connections_t, add, void,
|
||||
/* schedule timeout checking */
|
||||
lib->scheduler->schedule_job_ms(lib->scheduler,
|
||||
(job_t*)callback_job_create((callback_job_cb_t)check_timeouts,
|
||||
this, NULL, (callback_job_cancel_t)return_false),
|
||||
this, NULL, callback_job_cancel_thread),
|
||||
this->timeout * 1000);
|
||||
|
||||
dbg_nas_user(nas_id, user_name, FALSE, "created");
|
||||
|
||||
@@ -296,7 +296,7 @@ uci_control_t *uci_control_create()
|
||||
{
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create_with_prio((callback_job_cb_t)receive,
|
||||
this, NULL, (callback_job_cancel_t)return_false,
|
||||
this, NULL, callback_job_cancel_thread,
|
||||
JOB_PRIO_CRITICAL));
|
||||
}
|
||||
return &this->public;
|
||||
|
||||
@@ -230,7 +230,7 @@ ipsec_event_relay_t *ipsec_event_relay_create()
|
||||
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create((callback_job_cb_t)handle_events, this,
|
||||
NULL, (callback_job_cancel_t)return_false));
|
||||
NULL, callback_job_cancel_thread));
|
||||
|
||||
return &this->public;
|
||||
}
|
||||
|
||||
@@ -336,9 +336,9 @@ ipsec_processor_t *ipsec_processor_create()
|
||||
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create((callback_job_cb_t)process_inbound, this,
|
||||
NULL, (callback_job_cancel_t)return_false));
|
||||
NULL, callback_job_cancel_thread));
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create((callback_job_cb_t)process_outbound, this,
|
||||
NULL, (callback_job_cancel_t)return_false));
|
||||
NULL, callback_job_cancel_thread));
|
||||
return &this->public;
|
||||
}
|
||||
|
||||
@@ -156,7 +156,7 @@ METHOD(pt_tls_dispatcher_t, dispatch, void,
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create_with_prio((callback_job_cb_t)handle,
|
||||
connection, (void*)cleanup,
|
||||
(callback_job_cancel_t)return_false,
|
||||
callback_job_cancel_thread,
|
||||
JOB_PRIO_CRITICAL));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -221,7 +221,7 @@ static bool watch(private_stream_service_t *this, int fd, watcher_event_t event)
|
||||
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create_with_prio((void*)accept_async, data,
|
||||
(void*)destroy_async_data, (callback_job_cancel_t)return_false,
|
||||
(void*)destroy_async_data, callback_job_cancel_thread,
|
||||
this->prio));
|
||||
}
|
||||
else
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2009-2012 Tobias Brunner
|
||||
* Copyright (C) 2009-2025 Tobias Brunner
|
||||
* Copyright (C) 2007-2011 Martin Willi
|
||||
*
|
||||
* Copyright (C) secunet Security Networks AG
|
||||
@@ -131,3 +131,11 @@ callback_job_t *callback_job_create(callback_job_cb_t cb, void *data,
|
||||
return callback_job_create_with_prio(cb, data, cleanup, cancel,
|
||||
JOB_PRIO_MEDIUM);
|
||||
}
|
||||
|
||||
/*
|
||||
* Described in header
|
||||
*/
|
||||
bool callback_job_cancel_thread(void *data)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2012 Tobias Brunner
|
||||
* Copyright (C) 2012-2025 Tobias Brunner
|
||||
* Copyright (C) 2007-2011 Martin Willi
|
||||
*
|
||||
* Copyright (C) secunet Security Networks AG
|
||||
@@ -62,6 +62,15 @@ typedef void (*callback_job_cleanup_t)(void *data);
|
||||
*/
|
||||
typedef bool (*callback_job_cancel_t)(void *data);
|
||||
|
||||
/**
|
||||
* Default implementation of callback_job_cancel_t that simply returns FALSE
|
||||
* to force cancellation of the thread by the processor.
|
||||
*
|
||||
* @param data ignored argument
|
||||
* @return always returns FALSE
|
||||
*/
|
||||
bool callback_job_cancel_thread(void *data);
|
||||
|
||||
/**
|
||||
* Class representing an callback Job.
|
||||
*
|
||||
|
||||
@@ -329,7 +329,8 @@ scheduler_t * scheduler_create()
|
||||
this->heap = (event_t**)calloc(this->heap_size + 1, sizeof(event_t*));
|
||||
|
||||
job = callback_job_create_with_prio((callback_job_cb_t)schedule, this,
|
||||
NULL, return_false, JOB_PRIO_CRITICAL);
|
||||
NULL, callback_job_cancel_thread,
|
||||
JOB_PRIO_CRITICAL);
|
||||
lib->processor->queue_job(lib->processor, (job_t*)job);
|
||||
|
||||
return &this->public;
|
||||
|
||||
@@ -291,7 +291,7 @@ static void notify(private_watcher_t *this, entry_t *entry,
|
||||
|
||||
this->jobs->insert_last(this->jobs,
|
||||
callback_job_create_with_prio((void*)notify_async, data,
|
||||
(void*)notify_end, (callback_job_cancel_t)return_false,
|
||||
(void*)notify_end, callback_job_cancel_thread,
|
||||
JOB_PRIO_CRITICAL));
|
||||
}
|
||||
|
||||
@@ -559,7 +559,7 @@ METHOD(watcher_t, add, void,
|
||||
|
||||
lib->processor->queue_job(lib->processor,
|
||||
(job_t*)callback_job_create_with_prio((void*)watch, this,
|
||||
NULL, (callback_job_cancel_t)return_false, JOB_PRIO_CRITICAL));
|
||||
NULL, callback_job_cancel_thread, JOB_PRIO_CRITICAL));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -587,7 +587,7 @@ static void start_echo_server(echo_server_config_t *config)
|
||||
|
||||
lib->processor->queue_job(lib->processor, (job_t*)
|
||||
callback_job_create((void*)serve_echo, config, NULL,
|
||||
(callback_job_cancel_t)return_false));
|
||||
callback_job_cancel_thread));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user