- Write a http server in c++98
- Base file configuration should follow nginx model
- Server should work as per RFC standard for HTTP/1.1
- A request to the server should never hang forever
- Server must be compatible with the web browser of our choice (mozilla and chrome)
- HTTP response status codes must be accurate
- Server must have default error pages if none are provided
- Server must be able to serve a fully static website
- Clients must be able to upload files (binary files are not managed)
- GET, POST, and DELETE methods are required
- Server must stay available at all cost (stress test using siege)
- Implement multiplexed socket management using either select, poll, epoll or kqueue (we used kqueue)
As we used kqueue function to implement our server which is less portable than select, program might not compile depending on the OS you are using (project was built and tested on MacOS).