What I don't really like is having to put an extension and define a rewrite URL (I had to enable them with ./configure, and it makes the binary bigger) for FastCGI, instead of simply matching by URI.
I agree it can be seen as a configuration-hack to make thinks work. On the other hand, Hiawatha always uses the extension to determine how to handle files. This makes it consistent in how it works. And because of this consistency, the result is easy code which results in lesser security problems. It's also that every piece of software works in its own way. Hiawatha ain't Cherokee or Lighttpd, so it's likely it doesn't work like those two. So, I'd really appriciate if you use Hiawatha for a while, get used to its configurationsyntax and after that let me know if you still think the FastCGI-rewrite way is not a good way to do it.
Another thing I find annoying is the Banning options. I didn't manage to completely disable banning, but maybe I haven't found the good combination of options.
The only banning option that is enabled by default is BanOnMaxPerIP, and only for 2 seconds (to block DoS-ers). You can disable it by using BanOnMaxPerIP = 0. By doing so, Banning is completly disabled. And if you want some more quaranty, use BanlistMask = deny:all Via this setting, no IP ends up in the banlist.
It could also be great to be able to combine the configuration files in only 1 file (I only have 1 virtual host and 4 lines in the mime config file), and then: hiawatha -f /etc/hiawatha.conf insted of giving a whole directory.
The mimetype file is in most cases very large. Therefor I think it's nice to have it in a seperated file. Can you explain why you want them in one file? What problems do you experience with having those in a seperated file?
I think hiawatha could target developers of embedded systems, and its size could be reduced even more without too much work. For example, let the user disable threads, and use CYaSSL (http://www.yassl.com) instead of OpenSSL. And maybe a configure option --enable-small that would strip out most of the features like Ban,...
Disabling threads is not an option. It's part of the core of Hiawatha. Hiawatha has to be able to handle multiple connections. Forking is slow, so threading is the only way.
About SSL, I'm not really a big fan of the OpenSSL API, but it is available on almost every platform. Which is not the case for the other SSL libraries available.
About the --enable-small, I will see if there are some Hiawatha features which are suitable for enabling or disabling them during compiling and at the same time make the binary significantly smaller. But I doubt if there are any.