mirror of
https://git.gnunet.org/libmicrohttpd.git
synced 2026-09-25 04:09:31 +03:00
63b5f01682144ebb24cbfbcc05b2260cd3fa2605
About ===== libmicrohttpd is a GNU library (part of the GNU project) written in C that provides a compact API and implementation of an HTTP 1.1 web server (HTTP 1.0 is also supported). libmicrohttpd only implements the HTTP 1.1 protocol. The main application must still provide the content. Installation ============ If you are using Subversion, 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. Configure options ================= Especially for development, use "--enable-messages" to enable error reporting (and use MHD_USE_DEBUG). Error reporting is not enabled by default to reduce the size of the library (error messages take space!). If you are concerned about space, you should set "CFLAGS" to "-Os -fomit-frame-pointer" to have gcc generate tight code. The resulting binary should be about 30k (without SSL support) 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, BSD, OS X, W32 and z/OS. Note that HTTPS is not supported on z/OS (yet). We also have reports of users using it on vxWorks and Symbian. Note that on platforms where the compiler does not support the "constructor" attribute, you must call "MHD_init" before using any MHD functions and "MHD_fini" after you are done using MHD. Notes on compiling on z/OS: --------------------------- After extracting the archive, run iconv -f UTF-8 -t IBM-1047 contrib/ascebc > /tmp/ascebc.sh chmod +x /tmp/ascebc.sh for n in `find * -type f` do /tmp/ascebc.sh $n done to convert all source files to EBCDIC. Note that you must run "configure" from the directory where the configure script is located. Otherwise, configure will fail to find the "contrib/xcc" script (which is a wrapper around the z/OS c89 compiler). Development Status ================== This is a beta release. Below we list things that should be implemented (in order of importance) before we can claim to be reasonably complete. Missing features: ================= - SSL support does not work with SELECT-based threading modes (issue is that the gnutls state machine does not like EAGAIN/EINTR return values from send/recv, despite having tons of branches on those values). - SSL code is not working (GNUtls integration broken) Untested features: ================== - add testcases for 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) - add testcases for resource limit enforcement - add testcases for client queuing early response, suppressing 100 CONTINUE - extend testcase for chunked encoding to validate handling of footers - more testing for SSL support Functions not covered by "make check": ====================================== - MHD_get_connection_values - MHD_set_connection_value - parse_cookie_header - parse_arguments - MHD_del_response_header - MHD_get_response_headers - MHD_tls_connection_close Missing documentation: ====================== - manual: * document configuration options * document SSL/TLS support * document details on porting MHD (plibc, z/OS) - tutorial: * clean up English * make sure everything is accurate
Languages
C
86.4%
M4
10.3%
Shell
1.9%
Makefile
1.3%