Tinyhttpd is an educational HTTP server originally written in C by J. David Blackstone in 1999. Its implementation is under roughly 500 lines, making the entire request lifecycle small enough to study directly. The server opens a socket, accepts browser connections, parses HTTP methods and URLs, and serves files from an htdocs directory. It handles GET and POST requests and can execute CGI programs through Unix pipes and child processes. The code includes responses for bad requests, missing files, unsupported methods, and CGI failures. Threaded request handling is available in the original implementation, with documented adjustments for Linux builds. The project is explicitly intended for learning and is not production-quality server software.
Features
- Minimal C HTTP server
- GET and POST request handling
- Static file serving
- CGI program execution
- Socket and process management examples
- Educational request lifecycle implementation