]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
callback-job: Replace return_false() in constructors with dedicated function
authorTobias Brunner <tobias@strongswan.org>
Fri, 21 Feb 2025 15:45:57 +0000 (16:45 +0100)
committerTobias Brunner <tobias@strongswan.org>
Wed, 19 Mar 2025 09:22:37 +0000 (10:22 +0100)
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.

25 files changed:
src/charon-cmd/cmd/cmd_connection.c
src/frontends/android/app/src/main/jni/libandroidbridge/backend/android_dns_proxy.c
src/frontends/android/app/src/main/jni/libandroidbridge/backend/android_service.c
src/libcharon/network/receiver.c
src/libcharon/network/sender.c
src/libcharon/plugins/bypass_lan/bypass_lan_listener.c
src/libcharon/plugins/eap_radius/eap_radius_accounting.c
src/libcharon/plugins/eap_radius/eap_radius_plugin.c
src/libcharon/plugins/ha/ha_ctl.c
src/libcharon/plugins/ha/ha_dispatcher.c
src/libcharon/plugins/ha/ha_segments.c
src/libcharon/plugins/kernel_libipsec/kernel_libipsec_esp_handler.c
src/libcharon/plugins/kernel_libipsec/kernel_libipsec_router.c
src/libcharon/plugins/smp/smp.c
src/libcharon/plugins/tnc_pdp/tnc_pdp_connections.c
src/libcharon/plugins/uci/uci_control.c
src/libipsec/ipsec_event_relay.c
src/libipsec/ipsec_processor.c
src/libpttls/pt_tls_dispatcher.c
src/libstrongswan/networking/streams/stream_service.c
src/libstrongswan/processing/jobs/callback_job.c
src/libstrongswan/processing/jobs/callback_job.h
src/libstrongswan/processing/scheduler.c
src/libstrongswan/processing/watcher.c
src/libtls/tests/suites/test_socket.c

index 8e8d8236e52fd5c195f3d4a871cf3a43aa83b522..e220e33a62a265ea19cec92a2719cebd0fe54633 100644 (file)
@@ -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;
 }
index caaa2ff058b4d9bfbc28d63598d291fda1ca44e9..cc15bd40f0a12b14b077896334d40ed24c00a6d2 100644 (file)
@@ -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),
index f7e6ec34bee587a99fc00cfdc41a45ca6e8a8c83..12d2e681becc36658679719452acff82c563e4eb 100644 (file)
@@ -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
index e79d5974409e909a30f1ec58f52fdb6957ad9ea6..480d1d622d5438786d7356f178defdff565adfee 100644 (file)
@@ -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;
 }
index 4543766d62e09dd241bee929693376a2c97e8ebd..3fcd17f1b6337723cb4a5bbe588ceb38b6cf3f66 100644 (file)
@@ -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;
 }
index db7abd8146b49d6261d7f604b712a9f19c9ba811..c9aed3666fc00b44561c6252fe263795abad27c7 100644 (file)
@@ -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,
index f833dc3c0b441fa407ece8a54a94acae8707b400..2f29d0807641d0cf6649f8109308df96e9825318 100644 (file)
@@ -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);
        }
 }
 
index 5051542615a8f36a7196b68b4456c63be03e2433..55d5e032ceab8c5739f41a4ce6c0ddc43c1d4711 100644 (file)
@@ -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)
        {
index 8859bae166b37fd7ccd680d2d13a061ffaae13ab..3d2ac7de84db4427078cdc2b7c7e1f1a83118cad 100644 (file)
@@ -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;
 }
index 5de26a65a2709643214d125c3fc9841a69dda3f4..83be91ab1590c5d7df03d6a4dafe9fdb7680038a 100644 (file)
@@ -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;
 }
index afb76b39ea27592432cee8659710fb5b1186ca56..32d9ee40717e55fcb5e5cf447ea351b3f6d657d6 100644 (file)
@@ -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);
 }
 
index 095ad67b4b0697adcdb7e11f2ba7dc1c34527a5b..c18e266e4d11fb7746a2f26a60b06a0c23f26c57 100644 (file)
@@ -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;
 }
 
index 74746e251de0302f422999f7ef2bb65487e977d1..07adc70be3e10a10dcd35bb7e823296575dff3ce 100644 (file)
@@ -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;
index 6ca9f13997e123b988d3c3be4b1cef18909fe858..85ff5830bc5249ed4457448ee208df559d9b9ed5 100644 (file)
@@ -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;
 }
index 30aeb116dec87261381a54a3bf54162244560085..da317a894d990a640c0548e5c01a3e7b1be3c622 100644 (file)
@@ -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");
index b033c832c8c439bd29dc4edbe88c5c60fdd88c79..8074005ee575ccbff87d30323280a9b59730c9eb 100644 (file)
@@ -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;
index 0f10795d168cd11832c2a06ba3b93953aa7b9043..802146eef21768d01945431dfb2404530e2edd3c 100644 (file)
@@ -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;
 }
index 2572b088089ef3928bdfb423b3157f591179072c..8549fefe261cb9e2b271d3f37de02d732338da4d 100644 (file)
@@ -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;
 }
index a134bee238fd8fa59af6091e0a4d8f191067bbf2..c7e42b277e1764439077490daba0a80e803ab1e4 100644 (file)
@@ -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));
        }
 }
index 5b709a2247db26fd44f3bb70328546ee1544ccc5..c85a0664351e6139473fba731c66b3af684c631c 100644 (file)
@@ -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
index cb2a0aba5b95bf13eb1ac8c93938366d9287ae17..3ab40b947c94759ac889642b2763790ccdfd3a4f 100644 (file)
@@ -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;
+}
index 0f1ae212d87f0fe63e2bbca0a86ecfdb969416b0..fda868879449368a7ad51e34df68ef5283b755b6 100644 (file)
@@ -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.
  *
index c5e5dd83e706a181486b315ec92eac4bb32e7233..76d98ddff5178635fc4ba0a6ee9c9bea8b873a67 100644 (file)
@@ -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;
index 1200d670959e2ed78db70199f52dff8a3d9ef3bc..a86ec0910d1c6dad739c5a75220e34c81609bb80 100644 (file)
@@ -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
        {
index 91ee58b975f7e7d54a53fb864640ab29b2890c5f..c17d0a8873e718b82f57163ea9bfeb1392f4edc4 100644 (file)
@@ -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));
 }
 
 /**