(Though these are just the answers ;^)
hive.sewanee.edu
even though it may not be strictly necessary. If you are having issues connecting from telnet/browser to the proxy server, try it on hive.sewanee.edu
. If it still doesn't work, the problem must likely is in your program.parse_uri
function is a good example of techniques to parse Request Headers; borrow from it liberallyfflush
to force all changes to be written to the file, especially if you are using buffered I/O.Use the model in the text/notes of the threaded echo server. After a connection has been accepted, everything you did to service the client/server interaction in the non-multithreaded version goes in a thread function. If you already had that in a separate function, this much will be relatively easy.
Testing…not so much. Initially test the same way, one request at a time. However the way to know this is multithreaded environment is to attack it with multiple requests at the same time. Make sure one request doesn't complete before the next starts.
All writes to the log file must be protected with a semaphore, so different threads don't overwrite each other's output.