/*
* 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) {
/*
* 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;
#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;
} 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;
}
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;
.decode = mod_decode,
.encode = mod_encode,
.nak = mod_nak,
- .process = mod_process
};
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;
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,
.decode = test_decode,
.encode = test_encode,
.nak = test_nak,
- .process = test_process,
};
static fr_transport_t *transports = &transport;
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);
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;
.decode = test_decode,
.encode = test_encode,
.nak = test_nak,
- .process = test_process,
};
static fr_transport_t *transports = &transport;
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;
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,
.decode = test_decode,
.encode = test_encode,
.nak = test_nak,
- .process = test_process,
};
static fr_transport_t *transports = &transport;
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;
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;
}
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,
.decode = test_decode,
.encode = test_encode,
.nak = test_nak,
- .process = test_process,
};
static fr_transport_t *transports = &transport;