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?

[Course Website]