From: Alan T. DeKok Date: Tue, 23 May 2017 16:55:39 +0000 (-0400) Subject: remove "process" from fr_transport_t X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8ba70467e53237abc8ab45efc8446f21f36e0924;p=thirdparty%2Ffreeradius-server.git remove "process" from fr_transport_t --- diff --git a/src/lib/io/transport.h b/src/lib/io/transport.h index 8339a026f30..308ca5a9cfc 100644 Binary files a/src/lib/io/transport.h and b/src/lib/io/transport.h differ diff --git a/src/lib/io/worker.c b/src/lib/io/worker.c index 493a38eee94..c21df252f06 100644 --- a/src/lib/io/worker.c +++ b/src/lib/io/worker.c @@ -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; diff --git a/src/modules/proto_radius/proto_radius_status.c b/src/modules/proto_radius/proto_radius_status.c index 227170dbf37..9b6cdf6d0f1 100644 --- a/src/modules/proto_radius/proto_radius_status.c +++ b/src/modules/proto_radius/proto_radius_status.c @@ -30,7 +30,7 @@ #include #include -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; diff --git a/src/protocols/radius/radius_server_udp.c b/src/protocols/radius/radius_server_udp.c index 3c8024b7002..b0d4f09b7e1 100644 --- a/src/protocols/radius/radius_server_udp.c +++ b/src/protocols/radius/radius_server_udp.c @@ -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 }; diff --git a/src/tests/util/radius1_test.c b/src/tests/util/radius1_test.c index 781fb77883a..9742dc4ebe8 100644 --- a/src/tests/util/radius1_test.c +++ b/src/tests/util/radius1_test.c @@ -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; diff --git a/src/tests/util/radius_schedule_test.c b/src/tests/util/radius_schedule_test.c index 587e41d68d9..5cf6e699302 100644 --- a/src/tests/util/radius_schedule_test.c +++ b/src/tests/util/radius_schedule_test.c @@ -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; diff --git a/src/tests/util/schedule_test.c b/src/tests/util/schedule_test.c index e99cdbc5431..3d4032baf9c 100644 --- a/src/tests/util/schedule_test.c +++ b/src/tests/util/schedule_test.c @@ -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; diff --git a/src/tests/util/worker_test.c b/src/tests/util/worker_test.c index 170a1b6bc85..aaab9ab6c96 100644 --- a/src/tests/util/worker_test.c +++ b/src/tests/util/worker_test.c @@ -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;