cancelling requests due to max_request_time

Alan DeKok aland at deployingradius.com
Tue Jan 16 13:29:31 CET 2007


Frank Cusack wrote:

>> Is that right?  There are bugs there (besides pthread_cancel())?

  Perhaps.

>>  I see
>> that if delete_block_requests is no, pthread_cancel() doesn't get
>> called and instead STOP_NOW is set, so that looks good since usu. a
>> request would be blocked on I/O, not compute, so waiting for a module
>> to complete some I/O shouldn't be an issue.

  Except for issues like DNS, or SQL servers being down, or LDAP being
non-responsive for minutes.  But yes, it will mostly work.

>> I would suggest simply removing the delete_blocked_requests option
>> (always use "no").  The STOP_NOW flag looks good enuf.

  OK.

> Thought more about this.  Maybe a global cancel handler which calls
> into a new .cancel method of each module.  If the module doesn't have
> this function it won't be cancelable.  Hey I like that a lot.

  That's easy enough to do.  But if a module is cancellable, odds are it
won't be blocking on anything...

> Just need to ensure delete_blocked_requests isn't actually buggy.

  Now that I think about it, the request has to be deleted from the
"live" list, and placed onto a "dead" list.  That's so its memory isn't
leaked.

  I spent some time trying to come up with a good & easy solution, but
it never went anywhere.  The "packet list" stuff in CVS head is a start,
but not completely fleshed out.

  Alan DeKok.
--
  http://deployingradius.com       - The web site of the book
  http://deployingradius.com/blog/ - The blog



More information about the Freeradius-Devel mailing list