In FreeRadius, we are trying to use rlm_exec to call an external script in a multithreaded fashion, but once "exec" is called, it blocks other requests and only processes one request at a time. We need to support multiple users signing in at the same time. How can we make this multithreaded/multiprocessed? Here is a simple example we used to verify the blocking issue: # In file: raddb/sites-available/default authorize { ... exec update reply { Reply-Message = config:Reply-Message State = config:State } handled ... } # In file: raddb/mods-enabled/exec exec { program = "/bin/bash -f /etc/raddb/mods-config/.../execBashCustomAuthorization.sh" wait = yes input_pairs = request output_pairs = config shell_escape = yes timeout = 30 } # In file: raddb/mods-config/.../execBashCustomAuthorization.sh #!/bin/bash sleep 5 echo "Reply-Message = \"A short message\"," echo "State = \"2496578198c5447a8167fe3fe0398133\"," echo "Response-Packet-Type = \"Access-Challenge\"" exit 0 If we send 5 requests to our freeradius server, we expect all 5 responses to come back at about the same time, but they each respond 5 seconds apart, and it takes about 25 seconds for all to complete. We know that "wait=yes" makes freeradius wait for the script to finish and processes what the external script sent to stdout, but we thought it could still handle multiple requests in parallel. We can't use "wait=no" because we need output from the external script. Here are the details of our runtime environment: FreeRADIUS Version: 3.0.19 Python Version: 2.7.15 Please let us know if you need any additional environmental or configuration information. We thank you in advance for any help you can provide.