------------------------------------------------------------------------------
    ESE, a HyperText Transfer Protocol server
    Copyright (C) 1996-2002 Akira Higuchi <a-higuti@math.sci.hokudai.ac.jp>
    All rights reserved.

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
------------------------------------------------------------------------------


ESE (ore Esehttpd) is a HTTP server. It supports HTTP/1.1, SSL(Secure
Sockets Layer), Basic Authorization, CGI scripts, and so on. ESE is very
scalable. It can serve thousands of connections at the same time without
slowdown.  ESE is very fast especially with HTTP/1.1 clients, and
reasonably fast with HTTP/1.0 clients.

Currently, ESE is tested with Linux only. It uses queued realtime signals
(which is defined in POSIX Realtime Extension, and Linux 2.4.x extends
it) if available. Otherwise it uses poll() for I/O multiplexing. The
poll() method is slower when server have many idle connections, so using
Linux 2.4.x is recommended.


Requirements
============

o Linux 2.2.x or later is required. Linux 2.4.x is recommended.
o Applying patches in the misc/kernel-patches/ directory is recommended,
  but not necessary. These patches are against Linux 2.4.x.
o OpenSSL is required to build/run ESE even if you don't want to use SSL.
o ESE is tested with Intel(IA-32) and Compaq(Alpha) CPUs only. It should
  work with any other CPUs.


Features
========

o HTTP/1.1 compliant.
o Supports SSL(Secure Sockets Layer). Client authentication is also supported.
o Allows chroot after configuration files are loaded. This avoids many
  security risks.
o Supports Basic Authorization.
o Supports CGI scripts.
o Native Ruby support. Esehttpd can execute CGI scripts written in ruby
  without the ruby interpreter. This allows executing ruby scripts in a
  chrooted environment without subtle settings.
o High performance, highly scalable. Extremely fast for HTTP/1.1 requests.
o Supports HTTP/1.1 pipelined requests/responses.
o Supports 'Range' requests. Multiple ranges are not supported though.
o Logging: supports the Common Logfile Format.


Install
=======

See INSTALL file for install instructions.

