]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
remove "process" from fr_transport_t
authorAlan T. DeKok <aland@freeradius.org>
Tue, 23 May 2017 16:55:39 +0000 (12:55 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Tue, 23 May 2017 19:48:30 +0000 (15:48 -0400)
src/lib/io/transport.h
src/lib/io/worker.c
src/modules/proto_radius/proto_radius_status.c
src/protocols/radius/radius_server_udp.c
src/tests/util/radius1_test.c
src/tests/util/radius_schedule_test.c
src/tests/util/schedule_test.c
src/tests/util/worker_test.c

index 8339a026f3004c7568d1988d4f36b301f9a5bf9a..308ca5a9cfc19ce397e545eb0b29c2310f6bd228 100644 (file)
Binary files a/src/lib/io/transport.h and b/src/lib/io/transport.h differ
index 493a38eee94bd768969976de213654102f17475a..c21df252f06340f0aa5841dce9ded21d62154e40 100644 (file)
@@ -705,6 +705,8 @@ static REQUEST *fr_worker_get_request(fr_worker_t *worker, fr_time_t now)
 
        /*
         *      Now that the "request" structure has been initialized, go decode the packet.
+        *
+        *      Note that this also sets the "process_async" function.
         */
        rcode = worker->transports[cd->transport]->decode(cd->packet_ctx, cd->m.data, cd->m.data_size, request);
        if (rcode < 0) {
@@ -767,11 +769,8 @@ nak:
 
        /*
         *      Bootstrap the async state machine with the initial
-        *      state of the request.  The process_async function will
-        *      take care of pushing the state machine through it's
-        *      transitions.
+        *      state of the request.
         */
-       request->process_async = request->transport->process;
        fr_time_tracking_start(&request->tracking, now);
 
        return request;
index 227170dbf3768d6f80396d9aaf9092d76afd6885..9b6cdf6d0f143526f89e4675f8f04baab7a9dd38 100644 (file)
@@ -30,7 +30,7 @@
 #include <freeradius-devel/io/transport.h>
 #include <freeradius-devel/rad_assert.h>
 
-static fr_transport_final_t mod_process(REQUEST *request)
+static fr_transport_final_t mod_process(REQUEST *request, UNUSED fr_transport_action_t action)
 {
        rlm_rcode_t rcode;
        CONF_SECTION *unlang;
index 3c8024b70024489c6588cbe8b091f314f19977eb..b0d4f09b7e10966ab8de7ced131c1d6551d5e209 100644 (file)
@@ -53,12 +53,22 @@ typedef struct fr_packet_ctx_t {
 } fr_packet_ctx_t;
 
 
+
+static fr_transport_final_t mod_process(REQUEST *request, fr_transport_action_t action)
+{
+       RDEBUG("\t\tPROCESS --- request %zd action %d\n", request->number, action);
+
+       return FR_TRANSPORT_REPLY;
+}
+
 static int mod_decode(void const *ctx, uint8_t *const data, size_t data_len, REQUEST *request)
 {
        fr_packet_ctx_t const *pc = ctx;
 
        RDEBUG("\t\tDECODE <<< request %zd - %p data %p size %zd\n", request->number, pc, data, data_len);
 
+       request->process_async = mod_process;
+
        return 0;
 }
 
@@ -87,13 +97,6 @@ static size_t mod_nak(void const *ctx, uint8_t *const packet, size_t packet_len,
        return 10;
 }
 
-static fr_transport_final_t mod_process(REQUEST *request, fr_transport_action_t action)
-{
-       RDEBUG("\t\tPROCESS --- request %zd action %d\n", request->number, action);
-
-       return FR_TRANSPORT_REPLY;
-}
-
 static ssize_t mod_read(int sockfd, void *ctx, uint8_t *buffer, size_t buffer_len)
 {
        ssize_t data_size;
@@ -159,5 +162,4 @@ fr_transport_t fr_radius_server_udp = {
        .decode                 = mod_decode,
        .encode                 = mod_encode,
        .nak                    = mod_nak,
-       .process                = mod_process
 };
index 781fb77883a001cd03a58c2c7b40e769255e4564..9742dc4ebe8d969eed47809ef0345612533252ae 100644 (file)
@@ -95,11 +95,19 @@ static void NEVER_RETURNS usage(void)
        exit(1);
 }
 
+static fr_transport_final_t test_process(REQUEST *request, fr_transport_action_t action)
+{
+       MPRINT1("\t\tPROCESS --- request %zd action %d\n", request->number, action);
+       return FR_TRANSPORT_REPLY;
+}
+
+
 static int test_decode(void const *packet_ctx, uint8_t *const data, size_t data_len, REQUEST *request)
 {
        fr_packet_ctx_t const *pc = packet_ctx;
 
        request->number = pc->id;
+       request->process_async = test_process;
 
        if (!debug_lvl) return 0;
 
@@ -137,12 +145,6 @@ static size_t test_nak(void const *packet_ctx, uint8_t *const packet, size_t pac
        return 10;
 }
 
-static fr_transport_final_t test_process(REQUEST *request, fr_transport_action_t action)
-{
-       MPRINT1("\t\tPROCESS --- request %zd action %d\n", request->number, action);
-       return FR_TRANSPORT_REPLY;
-}
-
 static fr_transport_t transport = {
        .name = "worker-test",
        .id = 1,
@@ -150,7 +152,6 @@ static fr_transport_t transport = {
        .decode = test_decode,
        .encode = test_encode,
        .nak = test_nak,
-       .process = test_process,
 };
 
 static fr_transport_t *transports = &transport;
index 587e41d68d92c441fc0104365e055ef34118b69b..5cf6e69930218d857dc5a71f7848807c9ccc02d2 100644 (file)
@@ -67,11 +67,18 @@ extern int          fr_socket_server_base(int proto, fr_ipaddr_t *ipaddr, int *port, cha
 extern int             fr_socket_server_bind(int sockfd, fr_ipaddr_t *ipaddr, int *port, char const *interface);
 extern int             fr_fault_setup(char const *cmd, char const *program);
 
+static fr_transport_final_t test_process(REQUEST *request, fr_transport_action_t action)
+{
+       MPRINT1("\t\tPROCESS --- request %zd action %d\n", request->number, action);
+       return FR_TRANSPORT_REPLY;
+}
+
 static int test_decode(void const *ctx, uint8_t *const data, size_t data_len, REQUEST *request)
 {
        fr_packet_ctx_t const *pc = ctx;
 
        if (!debug_lvl) return 0;
+       request->process_async = test_process;
 
        MPRINT1("\t\tDECODE <<< request %zd - %p data %p size %zd\n", request->number, pc, data, data_len);
 
@@ -107,12 +114,6 @@ static size_t test_nak(void const *ctx, uint8_t *const packet, size_t packet_len
        return 10;
 }
 
-static fr_transport_final_t test_process(REQUEST *request, fr_transport_action_t action)
-{
-       MPRINT1("\t\tPROCESS --- request %zd action %d\n", request->number, action);
-       return FR_TRANSPORT_REPLY;
-}
-
 static ssize_t test_read(int sockfd, void *ctx, uint8_t *buffer, size_t buffer_len)
 {
        ssize_t data_size;
@@ -160,7 +161,6 @@ static fr_transport_t transport = {
        .decode = test_decode,
        .encode = test_encode,
        .nak = test_nak,
-       .process = test_process,
 };
 
 static fr_transport_t *transports = &transport;
index e99cdbc54317b3084a64f3a618c47378b066a8e7..3d4032baf9ca4eb1ec9bd97018572dfcd974ed9e 100644 (file)
@@ -54,11 +54,19 @@ typedef struct fr_packet_ctx_t {
 static int             debug_lvl = 0;
 static char const      *secret = "testing123";
 
+static fr_transport_final_t test_process(REQUEST *request, fr_transport_action_t action)
+{
+       MPRINT1("\t\tPROCESS --- request %zd action %d\n", request->number, action);
+       return FR_TRANSPORT_REPLY;
+}
+
+
 static int test_decode(void const *packet_ctx, uint8_t *const data, size_t data_len, REQUEST *request)
 {
        fr_packet_ctx_t const *pc = packet_ctx;
 
        request->number = pc->id;
+       request->process_async = test_process;
 
        if (!debug_lvl) return 0;
 
@@ -96,12 +104,6 @@ static size_t test_nak(void const *packet_ctx, uint8_t *const packet, size_t pac
        return 10;
 }
 
-static fr_transport_final_t test_process(REQUEST *request, fr_transport_action_t action)
-{
-       MPRINT1("\t\tPROCESS --- request %zd action %d\n", request->number, action);
-       return FR_TRANSPORT_REPLY;
-}
-
 static fr_transport_t transport = {
        .name = "schedule-test",
        .id = 1,
@@ -109,7 +111,6 @@ static fr_transport_t transport = {
        .decode = test_decode,
        .encode = test_encode,
        .nak = test_nak,
-       .process = test_process,
 };
 
 static fr_transport_t *transports = &transport;
index 170a1b6bc859b3fe6343d0efa862f94775a25c9c..aaab9ab6c96b9b41e72cdc99ba8a994eab35de19 100644 (file)
@@ -76,6 +76,12 @@ static void NEVER_RETURNS usage(void)
        exit(1);
 }
 
+static fr_transport_final_t test_process(REQUEST *request, fr_transport_action_t action)
+{
+       MPRINT1("\t\tPROCESS --- request %zd action %d\n", request->number, action);
+       return FR_TRANSPORT_REPLY;
+}
+
 static int test_decode(void const *packet_ctx, uint8_t *const data, size_t data_len, REQUEST *request)
 {
        uint32_t number;
@@ -86,6 +92,8 @@ static int test_decode(void const *packet_ctx, uint8_t *const data, size_t data_
        memcpy(&number, data, sizeof(number));
        request->number = number;
 
+       request->process_async = test_process;
+
        MPRINT1("\t\tDECODE <<< request %zd - %p data %p size %zd\n", request->number, packet_ctx, data, data_len);
        return 0;
 }
@@ -112,12 +120,6 @@ static size_t test_nak(void const *packet_ctx, uint8_t *const packet, size_t pac
        return 10;
 }
 
-static fr_transport_final_t test_process(REQUEST *request, fr_transport_action_t action)
-{
-       MPRINT1("\t\tPROCESS --- request %zd action %d\n", request->number, action);
-       return FR_TRANSPORT_REPLY;
-}
-
 static fr_transport_t transport = {
        .name = "worker-test",
        .id = 1,
@@ -125,7 +127,6 @@ static fr_transport_t transport = {
        .decode = test_decode,
        .encode = test_encode,
        .nak = test_nak,
-       .process = test_process,
 };
 
 static fr_transport_t *transports = &transport;