Michael Griego wrote:
I did a little looking into this this evening. This assessment looks to be correct as it looks to be related to compiler optimizations. With the optimizations disabled in Make.inc, FreeRADIUS will start up on the correct port. For the fr_socket function, gcc appears to be optimizing the arguments by sending them through the registers instead of the stack frame, but the "port" argument is being clobbered ("optimized out") before the htons(port) call. Specifically, according to a step-through with GDB, after the first function call in fr_socket (which is to socket()), the port variable is gone ("optimized out").
<sigh> I've started testing the server with other compilers. GCC is getting too ugly for my liking. I'll put a note on the main web page.: DON'T USE -O2 ON FEDORA! Alan DeKok.