Mother wrote: > I am seeing a strange situation. I receive an accounting-stop request > from a NAS, and FreeRADIUS (1.1.7 against Oracle) updates the > corresponding radacct record. However, the NAS is not receiving the ack, > and thus re-sends the stop request. On the second request, FreeRADIUS > tries to do an update query again, and then, an insert query, with the > stop message details (i.e. only a stop time, reason idle-timeout, etc.), > which fails.
Why? > After the third request from the NAS (and corresponding > update followed by insert), Oracle throws a unique constraint violation > error, and the server freezes. Weird. > Questions: > > 1. Why is FreeRADIUS failing to see that this request was already > acknowledged, i.e. it has been updated on the database, and just sends > an ACK, rather than trying to insert a new record? Because RADIUS doesn't work like that. Accounting requests are never re-sent, so *all* accounting requests are "brand new", and have to be treated that way. > 2. Why does FreeRADIUS freeze on an SQL error from Oracle? Should it not > just log the error and carry on about its business? I am finding my > server freezing every few days due to these issues, for example, if a > query takes too long to run, or a trigger fails to execute. Is > FreeRADIUS against Oracle more fragile than say MySQL? I think that fewer people are using it that way. Perhaps you could try posting the error message, or run it under "gdb" to see why it's freezing. Alan DeKok. - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html