From 036bbbf5d85699187824ecf808414f40f0d5594f Mon Sep 17 00:00:00 2001 From: venaas Date: Mon, 8 Jan 2007 16:47:37 +0000 Subject: bug fixing git-svn-id: https://svn.testnett.uninett.no/radsecproxy/trunk@34 e88ac4ed-0b26-0410-9574-a7f39faa03bf --- radsecproxy.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'radsecproxy.c') diff --git a/radsecproxy.c b/radsecproxy.c index 5abdd16..4f16987 100644 --- a/radsecproxy.c +++ b/radsecproxy.c @@ -494,17 +494,24 @@ void sendrq(struct server *to, struct client *from, struct request *rq) { int i; pthread_mutex_lock(&to->newrq_mutex); - - /* should search from where inserted last */ - for (i = 0; i < MAX_REQUESTS; i++) + /* might simplify if only try nextid, might be ok */ + for (i = to->nextid; i < MAX_REQUESTS; i++) if (!to->requests[i].buf) break; if (i == MAX_REQUESTS) { - printf("No room in queue, dropping request\n"); - pthread_mutex_unlock(&to->newrq_mutex); - return; + for (i = 0; i < to->nextid; i++) + if (!to->requests[i].buf) + break; + if (i == to->nextid) { + printf("No room in queue, dropping request\n"); + pthread_mutex_unlock(&to->newrq_mutex); + return; + } } + + to->nextid = i + 1; rq->buf[1] = (char)i; + printf("sendrq: inserting packet with id %d in queue for %s\n", i, to->peer.host); if (!createmessageauth(rq->buf, rq->messageauthattrval, to->peer.secret)) return; -- cgit v1.2.3