request->component, request->module);
} else {
request->delay = USEC * request->root->max_request_time;
- RDEBUG2("WARNING: Child is still stuck");
+ RDEBUG2("WARNING: Child is hung after \"max_request_time\" for request %u",
+ request->number);
}
tv_add(&request->when, request->delay);
case REQUEST_RUNNING:
/*
* If we're not thread-capable, OR we're capable,
- * but have been told to run without threads,
- * complain when the requests is queued for a
- * thread, or running in a child thread.
+ * but have been told to run without threads, and
+ * the request is still running. This is usually
+ * because the request was proxied, and the home
+ * server didn't respond.
*/
#ifdef HAVE_PTHREAD_H
if (!have_children)
#endif
{
- rad_assert("We do not have threads, but the request is marked as queued or running in a child thread" == NULL);
- break;
+ goto done;
}
#ifdef HAVE_PTHREAD_H
*/
if (have_children &&
(pthread_equal(request->child_pid, NO_SUCH_CHILD_PID) == 0)) {
- radlog(L_ERR, "WARNING: Unresponsive child in module %s component %s",
- request->module ? request->module : "<server core>",
- request->component ? request->component : "<server core>");
+ radlog(L_ERR, "WARNING: Unresponsive child for request %u, in component %s module %s",
+ request->number,
+ request->component ? request->component : "<server core>",
+ request->module ? request->module : "<server core>");
+
}
request->delay = USEC;
* and clean it up.
*/
case REQUEST_DONE:
+ done:
#ifdef HAVE_PTHREAD_H
request->child_pid = NO_SUCH_CHILD_PID;
#endif
#ifdef WITH_PROXY
if (request->proxy) {
return process_proxy_reply(request);
-#endif
}
+#endif
return 1;
}
* and it should re-send it.
* If configured, encode, sign, and send.
*/
- if ((request->reply->code != 0) ||
- (request->listener->type == RAD_LISTEN_DETAIL)) {
+ if ((request->reply->code != 0)
+#ifdef WITH_DETAIL
+ || (request->listener->type == RAD_LISTEN_DETAIL)
+#endif
+ ) {
DEBUG_PACKET(request, request->reply, 1);
request->listener->send(request->listener, request);
}
}
+#ifdef WITH_PROXY
static void rad_retransmit_packet(REQUEST *request)
{
char buffer[256];
return 1;
}
-
+#endif
static void received_retransmit(REQUEST *request, const RADCLIENT *client)
{
/*
* We may want to quench the new request.
*/
- if ((listener->type != RAD_LISTEN_DETAIL) &&
+ if (
+#ifdef WITH_DETAIL
+ (listener->type != RAD_LISTEN_DETAIL) &&
+#endif
!can_handle_new_request(packet, client, root)) {
return 0;
}
}
#ifdef WITH_PROXY
else {
- int count = this->count;
+ int count;
/*
* Duplicate code
*/
if (this->status == RAD_LISTEN_STATUS_CLOSED) {
int count = this->count;
+
+#ifdef WITH_DETAIL
rad_assert(this->type != RAD_LISTEN_DETAIL);
+#endif
#ifdef WITH_PROXY
/*
xel = xel;
- if ((listener->type != RAD_LISTEN_DETAIL) &&
+ if (
+#ifdef WITH_DETAIL
+ (listener->type != RAD_LISTEN_DETAIL) &&
+#endif
(listener->fd < 0)) {
char buffer[256];
thread_pool_addrequest(request, fun);
}
-
+#ifdef WITH_DETAIL
/*
* This function is called periodically to see if this detail
* file is available for reading.
exit(1);
}
}
-
+#endif
static void event_status(struct timeval *wake)
{