Thanks for that. Can see where its occurring now:
When Captive Portal starts up it calls routine
captiveportal_radius_stop_all()
That then attempts send a radius stop request for each username in the captive portal db file.
Problem is it also calls getVolume(rulenumber) to get the number of input/output bytes for each username/rule from the db file. That rule doesnt exist so sits there and errors out. Has to go through each and every username/rule in the db file and this is a slow process when you have a large number of users in the file still (guessing its slow due to error handling or something)
Hmmm….whats the best way to clear this up I wonder ?
Cant let it run through the routine closing all accounting records for users - so could just delete the captiveportal db file on service startup (that would sort out my un-clean reboot issues), but causes a mess with concurrent logon checks
Could just send a dummy username through to radius to truncate the radius accounting table on startup - seems a crazy way to handle it
Could run a query against the MySQL radacct table manually on service startup (bypassing radius all together). No such a detached model and also dont have extensions in place to hit MySQL directly.
Who's got a good idea ?