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