Brian De Wolf wrote:
The oddest part about this is that I had found this thread: http://osdir.com/ml/freeradius.devel/2005-03/msg00112.html
It looks like the locking should work perfectly! But it seems these changes never found their way into the 1.x series, despite having occurred two years ago.
This was a long time ago therefore I'm not sure I remember correctly. In my memories the solution was in two parts: one algorithm for rlm_detail and an other for radrelay.
I poked around in CVS and found revision 1.43 which is when the corrected locking was added. I took a diff of revision 1.42 and 1.43, and applied it by hand to 1.1.7. I haven't had any complaints from freeradius about locking issues since.
I think this is only half of the fix. The error messages have disappeared but I suspect there're still race conditions without the corresponding changes to radrelay.c.
I have attached the patch. Is there any reason this never found its way into the 1.x series? I see it's in the CVS head.
Probably because radrelay is deprecated in the 2.0 series. The file "radrelay.c" was never properly fixed in CVS head. I must admit I completely forgot about it after so much time. The radrelay functionality is now integrated into the server core, where you can find the second part of the locking algorithm. See src/main/detail.c. -- Nicolas Baradakis