mirror of
https://github.com/ComodoSecurity/openedr/
synced 2026-06-06 15:24:33 +00:00
90 lines
3.0 KiB
Plaintext
90 lines
3.0 KiB
Plaintext
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.
|
|
|
|
|
|
Installation
|
|
============
|
|
|
|
See INSTALL for generic installation instructions.
|
|
|
|
If you are using Git, run "autoreconf -fi" 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 (daemon.c); special case (abort)
|
|
- parse_options (daemon.c)
|
|
- MHD_set_panic_func (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!
|
|
|
|
|