*/
void request_free(REQUEST *request)
{
- void *ptr;
-
rad_assert(request->ev == NULL);
rad_assert(!request->in_request_hash);
rad_assert(!request->in_proxy_hash);
void request_inject(REQUEST *request)
{
- request_queue_or_run(request, request_running);
+ request_queue_or_run(request, request_running); /* child thread */
}
* Otherwise, insert it into the state machine.
* The child threads will take care of processing it.
*/
- request_queue_or_run(request, request_running);
+ ASSERT_MASTER;
+ request_queue_or_run(request, request_running); /* network thread - from listener */
return 1;
}
char buffer[128];
VERIFY_PACKET(packet);
+ ASSERT_MASTER;
PTHREAD_MUTEX_LOCK(&proxy_mutex);
proxy_p = fr_packet_list_find_byreply(proxy_list, packet);
REDEBUG2("Failed to find live home server for request");
post_proxy_fail:
if (setup_post_proxy_fail(request)) {
- request_queue_or_run(request, proxy_running);
+ ASSERT_MASTER;
+ request_queue_or_run(request, proxy_running); /* network thread - timer */
} else {
gettimeofday(&request->reply->timestamp, NULL);
request_cleanup_delay_init(request);
}
if (setup_post_proxy_fail(request)) {
- request_queue_or_run(request, proxy_no_reply);
+ ASSERT_MASTER;
+ request_queue_or_run(request, proxy_no_reply); /* network thread - timer */
} else {
gettimeofday(&request->reply->timestamp, NULL);
request_cleanup_delay_init(request);
* We received a new reply. Go process it.
*/
case FR_ACTION_PROXY_REPLY:
- request_queue_or_run(request, proxy_running);
+ ASSERT_MASTER;
+ request_queue_or_run(request, proxy_running); /* network thread - listener */
break;
default:
fail:
if (setup_post_proxy_fail(request)) {
- request_queue_or_run(request, coa_no_reply);
+ ASSERT_MASTER;
+ request_queue_or_run(request, coa_no_reply); /* network thread - timer */
} else {
request_done(request, FR_ACTION_DONE);
}
request->proxy->dst_port,
mrd);
if (setup_post_proxy_fail(request)) {
- request_queue_or_run(request, coa_no_reply);
+ ASSERT_MASTER;
+ request_queue_or_run(request, coa_no_reply); /* network thread - timer */
} else {
request_done(request, FR_ACTION_DONE);
}
request->delay = (int)request->root->init_delay.tv_sec * USEC +
(int)request->root->init_delay.tv_usec;
- request_queue_or_run(request, coa_running);
+ ASSERT_MASTER;
+ request_queue_or_run(request, coa_running); /* network thread - timer */
break;
default: