Joe Maimon jmaimon at
Fri Oct 7 15:38:00 CEST 2005

Is only ever set to 1 from what I can grep of the code.

So when listen.c calls

          *      Find the original request in the request list
         oldreq = rl_find_proxy(packet);

which in turn executes

         node = rbtree_find(proxy_tree, &myrequest);

         if (node) {
                 maybe = rbtree_node2data(proxy_tree, node);
                 rad_assert(maybe->proxy_outstanding > 0);

                  *      Received all of the replies we expect.
                  *      delete it from both trees.
                 if (maybe->proxy_outstanding == 0) {
                         rl_delete_proxy(&myrequest, node);

         return maybe;

How can it be possible (what parts of the code have I not paid 
sufficient attention to) for this to happen in listen.c ?

          *      If there is already a reply, maybe this one is a
          *      duplicate?
         if (oldreq->proxy_reply) {
                 if (memcmp(oldreq->proxy_reply->vector,
                            sizeof(oldreq->proxy_reply->vector)) == 0) {
                         radlog(L_ERR, "Discarding duplicate reply from 
home server %s port %d  - ID: %d for request %d",

More information about the Freeradius-Devel mailing list