How erabareta/webserv works
WebServ is a C++98 HTTP/1.0 server. Its main workflow parses configuration, accepts concurrent client connections, incrementally parses and validates requests, then serves files or builds method-specific responses; configured CGI requests instead run a program and return its output through the client connection. Response handling also covers uploads, deletion, directory listing, error pages, redirects, cookies, and sessions. The graph reflects the README’s documented capabilities, but some subsystem links rely on that documentation because implementation excerpts are incomplete.
Main entry points: Client.cpp Client state and I/O · Multiplexing.cpp Event loop · main.cpp Startup · build_response.cpp Response builder
Components 14
Startup and configuration
- Startup
main.cpp - Config parser
Parser - Server settings
Includes/parser.hpp
Connection handling
- Event loop
Server/Multiplexing.cpp - Timeout tracker
Server/TimeoutTracker.cpp - Client state and I/O
Client/Client.cpp
HTTP processing
- Request parser
Client/Request/request.cpp - Response builder
Client/Response/build_response.cpp - Cookie sessions
Client/Response/session_cookie.cpp
External resources
- Site files
web - CGI programs
web/Cgi/programs - CGI runtime
Other components
- Server operator
- HTTP client
Connections 18
- Server operator → Startup: starts
- Startup → Config parser: loads config
- Config parser → Server settings: builds settings
- Startup → Event loop: starts loop
- Event loop → Server settings: uses settings
- HTTP client → Event loop: sends requests
- Event loop → Client state and I/O: accepts connection
- Event loop → Client state and I/O: dispatches I/O
- Client state and I/O → Request parser: parses request
- Client state and I/O → Response builder: builds response
- Event loop → Timeout tracker: tracks deadlines
- Response builder → Site files: reads or writes files
- Response builder → Cookie sessions: checks session
- Client state and I/O → CGI runtime: launches CGI
- Client state and I/O → CGI programs: executes configured script
- CGI runtime → CGI programs: runs script
- CGI runtime → Client state and I/O: returns output
- Client state and I/O → HTTP client: sends response