On Wednesday 01 June 2005 18:56, Alan DeKok wrote:
Kevin Bonner <keb@pa.net> wrote:
The proxy listener has several pointers that are never set, as shown by your gdb print above.
Whoops... that as a dumb mistake.
I've committed a fix which should initialize those pointers.
Thanks.
Alan DeKok
Alan, The fix looks good, but radiusd still segfaults at radiusd.c:735 because the proxy update function is NULL. (gdb) bt #0 0x00000000 in ?? () #1 0x0804e709 in main (argc=2, argv=0xfef163f0) at radiusd.c:735 (gdb) frame 1 #1 0x0804e709 in main (argc=2, argv=0xfef163f0) at radiusd.c:735 735 next = listener->update(listener, time_now); (gdb) print *listener $1 = {next = 0x0, type = RAD_LISTEN_PROXY, fd = 8, identity = 0x0, rl = 0x0, recv = 0x805f098 <proxy_socket_recv>, send = 0x805ecf8 <proxy_socket_send>, update = 0, print = 0x805eb34 <socket_print>, data = 0x883d0f0} Here is a patch which should resolve this problem. ==cut here== diff -u -r1.347 radiusd.c --- radiusd.c 27 May 2005 21:19:57 -0000 1.347 +++ radiusd.c 2 Jun 2005 17:14:17 -0000 @@ -732,7 +732,9 @@ listener = listener->next) { int next; - next = listener->update(listener, time_now); + next = (listener->update != NULL) ? + listener->update(listener, time_now) : + SLEEP_FOREVER; if (next < sleep_time) { sleep_time = next; } ==cut here== Kevin Bonner