When lots of concurrent auth packets arrived at radius server .by
default ,if radius server exceeds the max packet process thread ,it
will discard the auth packet/<br>
see the code below in version 1.0.5<br>
<br clear="all">int thread_pool_addrequest(REQUEST *request, RAD_REQUEST_FUNP fun)<br>
{<br>
/*<br>
* If the thread pool is busy handling requests, then<br>
* try to spawn another one.<br>
*/<br>
if (thread_pool.active_threads == thread_pool.total_threads) {<br>
if (spawn_thread(request->timestamp) == NULL) {<br>
radlog(L_INFO,<br>
"The maximum number of threads
(%d) are active, cannot spawn new thread to handle request",<br>
thread_pool.max_threads);<br>
return 0;<br>
}<br>
}<br>
<br>
/*<br>
* Add the new request to the queue.<br>
*/<br>
request_enqueue(request, fun);<br>
<br>
return 1;<br>
}<br>
<br>
why not just add the auth packet to the queue of the thread if the active thread number exceed the total thread number?<br>
<br>
<br>
<br>
<br>
<br>
<br>-- <br>Yesterday is a history.<br>Tomorrow is a mystery.<br>Today is a gift.<br>That's why we call it "the Present".