How raphystoll/webserv works
Webserv is a C++98 HTTP server. The principal workflow is: configuration is parsed, listening sockets are created, poll-based connections receive HTTP bytes, requests are parsed and routed, method handlers access web files or launch CGI processes, and ResponseBuilder produces buffered responses. The graph preserves documented GET/POST/DELETE, chunked and temporary-body handling, virtual-host routing, uploads/downloads, auto-indexing, CGI, and timeout behavior. The source sample directly confirms the main event-loop orchestration; some handler and configuration links are represented at module level.
Components 20
Startup & Config
- Server Main
src/main.cpp - Config Parser
src/configParser/DataConfig.cpp - Socket Bootstrap
src/BootStrap/BootStrap.cpp
Network Runtime
- Listener Sockets
src/BootStrap/helpers/create_listener_socket.cpp - Poll Event Loop
src/core/eventloop/EventLoop.cpp - Timeout Checks
src/core/eventloop/helpers/check_timeouts.cpp - Signal Handler
src/core/SignalHandler.cpp
HTTP Processing
- Request Parser
src/parsing/RequestParser.cpp - HTTP Request
src/parsing/Request.cpp - Route Matcher
src/http/RouteMatcher/findRoute.cpp - Response Builder
src/core/ResponseBuilder/ResponseBuilder.cpp
Content Services
- GET Handler
src/core/Method/Get/Get.cpp - POST Handler
src/core/Method/Post/Post.cpp - DELETE Handler
src/core/Method/Delete/Delete.cpp - CGI Runner
src/core/Cgi/Cgi.cpp - Web Files
www/site1 - CGI Scripts
www/site1/cgi-bin
Connection State
- Client State
src/core/Client/Client.cpp - Body Spooling
src/parsing/helpers/parse_body.cpp
Other components
- HTTP Client
Connections 27
- HTTP Client → Poll Event Loop: sends requests
- Server Main → Signal Handler: installs signals
- Server Main → Config Parser: loads config
- Server Main → Socket Bootstrap: starts sockets
- Server Main → Poll Event Loop: runs loop
- Config Parser → Socket Bootstrap: provides settings
- Socket Bootstrap → Listener Sockets: creates listeners
- Socket Bootstrap → Poll Event Loop: provides sockets
- Poll Event Loop → Client State: tracks connections
- Poll Event Loop → Request Parser: parses bytes
- Request Parser → HTTP Request: produces request
- Request Parser → Body Spooling: spools large bodies
- Poll Event Loop → Response Builder: builds response
- Response Builder → Route Matcher: matches route
- Response Builder → GET Handler: dispatches GET
- Response Builder → POST Handler: dispatches POST
- Response Builder → DELETE Handler: dispatches DELETE
- Response Builder → CGI Runner: starts CGI
- GET Handler → Web Files: reads files
- POST Handler → Web Files: writes uploads
- DELETE Handler → Web Files: deletes files
- CGI Runner → CGI Scripts: executes scripts
- Poll Event Loop → CGI Runner: polls pipes
- Poll Event Loop → Timeout Checks: checks timeouts
- Timeout Checks → Client State: closes idle clients
- Signal Handler → Poll Event Loop: requests shutdown
- Response Builder → Client State: buffers output