1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- About
- =====
- GNU libmicrohttpd is a GNU package offering a C library that provides
- a compact API and implementation of an HTTP 1.1 web server (HTTP 1.0
- is also supported). GNU libmicrohttpd only implements the HTTP 1.1
- protocol. The main application must still provide the application
- logic to generate the content.
- GNU libmicrohttpd is dual-licensed under the GNU Lesser General Public
- License (LGPLv2.1+) and the eCos License. See COPYING for details.
- Joining GNU
- ===========
- This is a GNU program, developed by the GNU Project and part of the
- GNU Operating System. If you are the author of an awesome program and
- want to join us in writing Free Software, please consider making it an
- official GNU program and become a GNU maintainer. You can find
- instructions on how to do so at http://www.gnu.org/help/evaluation.
- We are looking forward to hacking with you!
- Installation
- ============
- See INSTALL for generic installation instructions.
- If you are using Git, run "./bootstrap" to create configure.
- In order to run the testcases, you need a recent version of libcurl.
- libcurl is not required if you just want to install the library.
- Especially for development, do use the MHD_USE_ERROR_LOG option to get
- error messages.
- Configure options
- =================
- If you are concerned about space, you should set "CFLAGS" to "-Os
- -fomit-frame-pointer" to have gcc generate tight code.
- You can use the following options to disable certain MHD features:
- --disable-https: no HTTPS / TLS / SSL support (significant reduction)
- --disable-messages: no error messages (they take space!)
- --disable-postprocessor: no MHD_PostProcessor API
- --disable-dauth: no digest authentication API
- --disable-epoll: no support for epoll, even on Linux
- The resulting binary should be about 30-40k depending on the platform.
- Portability
- ===========
- The latest version of libmicrohttpd will try to avoid SIGPIPE on its
- sockets. This should work on OS X, Linux and recent BSD systems (at
- least). On other systems that may trigger a SIGPIPE on send/recv, the
- main application should install a signal handler to handle SIGPIPE.
- libmicrohttpd should work well on GNU/Linux, W32, FreeBSD, Darwin,
- NetBSD, OpenBSD, Solaris/OpenIndiana, and z/OS.
- Note that HTTPS is not supported on z/OS (yet). We also have reports
- of users using it on vxWorks.
- Development Status
- ==================
- This is a beta release for libmicrohttpd. Before declaring the
- library stable, we should have testcases for the following features:
- - HTTP/1.1 pipelining (need to figure out how to ensure curl pipelines
- -- and it seems libcurl has issues with pipelining,
- see http://curl.haxx.se/mail/lib-2007-12/0248.html)
- - resource limit enforcement
- - client queuing early response, suppressing 100 CONTINUE
- - chunked encoding to validate handling of footers
- - more testing for SSL support
- - MHD basic and digest authentication
- In particular, the following functions are not covered by 'make check':
- - mhd_panic_std (mhd_panic.c); special case (abort)
- - parse_options (daemon.c)
- - MHD_get_version (daemon.c)
- Note that the working library is in src/microhttpd/ with the API in
- src/include/microhttpd.h. An *experimental* (read: not yet working
- at all) newer implementation is in src/lib/, with the new API in
- src/include/microhttpd2.h. The experimental code will need MUCH
- more testing and development, you are strongly advised to stick
- to microhttpd.h unless you are a MHD developer!
|