On Tue, Nov 29, 2011 at 3:57 PM, Alan DeKok <[email protected]> wrote: > Alexandre Chapellon wrote: >> I don't understand what you mean by "writing a detailed state >> machine"... state machine? > > Write down what the server receives, and what you want to do with it. > The server receives accounting on/off start/stop and alive packets. > It can receive those when a session is non-existent, open, or closed. > > How does the server determine the "right" thing to do? Write down the > logic. Then, implement it.
For comparison purposes, we currently implement some config and db schema modifications to better handle accounting packets. For example: - always return ok on accounting packets that the NAS sends. Implementing it requires using detail reader/writer and some unlang blocks to catch some weird corner cases (e.g. Acct-Session-Time=0) - use unique constraint on acctuniqueid - remove all *_alt queries - split "live" accounting table (those with Acct-Status-Type <> 'Stop') and "archive" accounting table - change most insert/update queries to "INSERT .... ON DUPLICATE KEY UPDATE ...." - use "DELETE IGNORE" to delete records from "live" accounting table Took some effort, but it works. @Alexandre: some of the logic might be relevant for your situation as well. -- Fajar - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

