[EMAIL PROTECTED] (Rainer Clasen) wrote:
> I've taken a look at the logs and there is a pattern:
>
> in both cases the only server for a realm was marked dead immediately
> before the crash.
OK, that helps a *lot*.
> In both cases the Server seems to be marked dead eronously:
>
> Tue Feb 19 13:27:37 2002 : Auth: Received reply: [login@realm/password] (from NAS
>port 20113) proxy XX.YY.ZZ.AA ID 227
> Tue Feb 19 13:27:37 2002 : Auth: Login OK: [login@realm/password] (from NAS port
>20113)
> Tue Feb 19 13:27:37 2002 : Proxy: timeout, rejecting: [login@realm/password] (from
>NAS port 20113) proxy XX.YY.ZZ.AA ID 228
Hmm... I would suggest going to src/main/radiusd.c, function
refresh_request(). Look for:
/*
* The request is finished.
*/
if (request->finished) goto setup_timeout;
and add:
if (request->reply && (request->reply->code != 0)) goto setup_timeout;
If that helps, then there's a logic error in the code, or internal
conflict in the 'request' data structure about what's happening with
the request.
> The timed out request seems to be the initial accounting request - which
> is far younger than 8*5 seconds.
Yeah, that sounds like a bug to me.
> Hmm, where is this cleanup done? I found only radius_free() that cleans
> ->proxy. But radius_free frees the complete request.
Yes. The request->reply, etc. SHOULD NOT be deleted until the
entire request has been deleted.
So there's something else weird going on here.
Alan DeKok.
-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html