proxy_outstanding

Joe Maimon jmaimon at ttec.com
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);
                 maybe->proxy_outstanding--;

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

         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,
                            packet->vector,
                            sizeof(oldreq->proxy_reply->vector)) == 0) {
                         radlog(L_ERR, "Discarding duplicate reply from 
home server %s port %d  - ID: %d for request %d",
                                inet_ntop(packet->src_ipaddr.af,




More information about the Freeradius-Devel mailing list