EHS
News
04/02/2012 - Release 1.5.0
- MinGW build for Windows targets is working again (at least on Fedora).
- EHS now supports WebSockets. See the ehs_wsgate example for a simple echo-server implementation.
- Started replacing PCRE++ by boost::regex. Therefore, for a short period, EHS depends on bothpcrepp and boost_regex.
- From now on, automated builds/snapshots of every SVN release are available. For Fedora packages, have a look at OpenSUSE's Build Service.
- As usual: A plethora of bugfixes and improvements.
06/14/2010 - Release 1.4.7
- Implemented chunked transfer encoding.
- Fixed almost all SSL-related memory leaks. There's still an 48byte leak, from SSL_library_init() but since this is a once initialization it is bearable.
- ServerStart and network initialization now throw exceptions instead of returning error codes. This is much cleaner and easier to handle: Just add a try/catch block around StartServer et. al. In the catch block, use the exception's what() to get a descriptive error message.
06/07/2010 - Release 1.4.6
- EHS now can cope with exceptions, thrown from within HandleRequest(). See the ehs_exception sample. [The backtrace functionality shown there, need either libbfd (part of binutils) or libdwarf (part of elfutils).]
- Integrated doxygen doc into the package. Link: See below.
- Another major cleanup. Splitted up the large ehs.h header into several separate ones.
Reduces namespace pollution because now only the actually required class headers are included by the "user's" app.
- Eliminated more warnings. EHS now builds without warnings even with GCC's -pedantic
- Fixed upload bug, introduced in 1.4.5.
05/28/2010 - Release 1.4.5
- SecureSocket is now derived from socket and thus can take advantage of bindhelper.
- Improved password callback mechanism from OpenSSL. No dlopen anymore. Simply re-implement
GetPassphrase() in your derived class. This also eliminates dependency on libdl.
05/26/2010 - Release 1.4.4
- Added bindhelper for binding to privileged ports when running non-root.
05/25/2010 - Release 1.4.3
- Got rid of the PME dependency. EHS now uses pcrecpp which is part of pcre since quite some time.
- Server shutdown now more robust. Toplevel thread now properly waits, until all worker threads have terminated.
05/24/2010 - Release 1.4.2
- Cleanup. Eliminated a lot of warnings from newer GCC (4.4.3) and several memory leaks.
- Windows support got lost on the way - sorry. As soon as i got some spare time, i'll make a mingw cross build (should be easy). Does anybody actually need that?
05/23/2010 - Release 1.4.1
- Maximum request size is now configurable. See "maxrequestsize" in developer doc.
05/20/2010 - I (Fritz Elfert) found EHS at
Zac's site and decided to adapt it to my needs. I realized, that since 2005 the project has be on hold. So i contacted Zac and he gave admin permissions to the project site at SourceForge to me ...
04/10/2005 - New version coming today. It's been a while..
06/27/2004 - 1.3.1 has some bugs with non-persistant behaviour. Fix is
coming soon..
05/24/2004 - Windows build is available. See the file
building_for_windows.txt in the 1.3.1 (and later when they come out) for
directions on how to set up visual studio 6 to build ehs. No other changes
in this version.
04/01/2004 -- No, no April Fool's joke, 1.3 is out. With a rewritten server
system, ehs is more stable than ever. Here's
what's changed -- Oh, and it doesn't crash nearly as much under load.
02/23/2004 -- Was just running ehs_test in 4-thread mode on my dual processor
Xeon system. I was serving 300 pages/second from /usr/share/dict/words.
Just thought I'd share that with you. BTW, running it with leak checking in
valgrind, it slows down to a paltry 40 pages/second.
What is EHS?
EHS stands for embedded HTTP server. It allows you to easily add web server
functionality to any C++ app. EHS allows your program to bind a port
(probably not port 80, but it could if you weren't running a web server there
already and ran the application as root) and handle application-specific web
requests. It is handy for remote administration or statistics gathering.
EHS is implemented as a C++ class which your application subclasses.
What *ISN'T* EHS?
EHS is *NOT* a standalone web server. And while you could possibly use it as
the basis of one, that would be silly, as there's already a
perfectly good one out there
License
Version 1.0.2 and higher are LGPL. Previously EHS was GPL.
Documentation
Here is the doxygen-generated documenation for EHS.
Examples are not documented yet, but it's a good starting point.
Contact Info:
Download
The current version is available at
SourceForge
Older versions at Zac's website:
Version 1.3.1 with Windows support.. see building_for_windows.txt
1.3.0 is also available:
here