Friday, February 16, 2007

Actual working version now posted

The code submitted previously (especially the archive) did not compile on Linux, only OS X. Several bugs including this have now been fixed. Other fixes include memory leaks and a minor error in the configuration parsing. There was a bit trouble with subversion this time around.

Download via svn or archive. To compile and run the demonstration:

./configure
make
cd src
./nhttpd

This will run a web server using the configuration in src/config.xml. To see the demo application, go to http://localhost:8080/.

Thursday, February 15, 2007

Big update

Submitted to SVN today a HUGE update. The demo app works out of the box (it just formats the incoming request into a table, nothing special).

Major Features Added:
  • Privilege separation
  • Better threading
  • Blocking queues
  • XML Configuration, with all options implemented
  • Now using GNU Autotools
The demo app works, but there's still lots of bugfixing to do. In particular, both the thread pools and the blocking queues need to be looked at. Privilege separation is implemented but not tested. Many functions are still not implemented (including the ServletContext and NHFile).

I wanted to make sure the server was working before making another commit, thus the long interval.

Tuesday, December 12, 2006

I'm not dead

Sorry, it's been awhile since the last post. My computer died and has been replaced. I now have a Mac/i386 system, so my development will be that. I can also test on Linux (a separate machine). I've mostly been working on code for blocking queues. The code must choose whether to use Sys V IPC, Posix mqueues, or Pthtread Rwlocks. Note that this is all for inter-thread communication.

Monday, November 27, 2006

nhttpd Project Created

Welcome to the development news blog for nhttpd. This will document the progress of nhttpd development. The project is hosted by Google Code at http://code.google.com/p/nhttpd/.

The goal of this project is an extensible, powerful HTTP/1.1 server written in C for POSIX-compliant systems. Of course, this sounds a lot like Apache, but new features are planned. For instance, the server will be capable of privilege separation. This means that two applications running on the same server can run under different credentials. This will be useful for hosting services and any server that has multiple users on it. This also means that applications running on the server do not need to have access to anything that the web server itself has access to.

Threads will be used to run multiple requests under the same credentials. Each different set of credentials will result in a process being forked, this process stays running as long as the main server runs. Thread pooling will be added to allow the number of threads to be controlled (avoiding a problem very much like a forkbomb).

Development is presently in the early stage. The sources as of right now provide an interface for allowing a single application to be loaded in to the server. Current work is on writing the configuration file reader. Configuration files are written in XML.

At present there does not seem to be any reason the server cannot run under IPV6.