[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

Reply via email to