CS631 -- Advanced Programming in the UNIX Environment
Code Reading Exercise: Compare HTTP Implementations
Compare the following simple HTTP daemons:
As you read through the code, identify the
following logical / functional blocks and pay
attention to how they are implemented:
- program startup and daemonization
- network logic (socket(2), bind(2), ...)
- request handling (pre-forking? select(2)? threads?
- input / request parsing and validation (how robust is this logic?)
- does this server support CGIs?
- does this server support ~-user directories?
- does this server support index generation?
- how does it handle regular file serving?
- what kind of coding style does the project use?
- would the code pass our standards?