C Shell
Latest commit fc5f010 Feb 6, 2013 grothoff -releasing 0.9.25
git-svn-id: https://gnunet.org/svn/libmicrohttpd@26036 140774ce-b5e7-0310-ab8b-a85725594a96
Permalink
Failed to load latest commit information.
contrib logo Jul 25, 2011
doc -releasing 0.9.25 Feb 6, 2013
m4 dead Jul 25, 2010
src -releasing 0.9.25 Feb 6, 2013
symbian ready for 0.9.0 Jul 26, 2010
AUTHORS Matthew Mundell wrote: Dec 5, 2012
COPYING dual licensing Oct 11, 2009
ChangeLog -releasing 0.9.25 Feb 6, 2013
INSTALL -releasing 0.9.25 Feb 6, 2013
Makefile.am pkg-config: if not anything else, helps with static linkage Feb 17, 2009
NEWS more Jan 10, 2007
README -update Jul 17, 2012
acinclude.m4 fix plibc check Nov 26, 2011
bootstrap specify m4 dir Feb 19, 2009
config.guess 0924 Dec 25, 2012
config.sub -releasing 0.9.25 Feb 6, 2013
configure.ac -releasing 0.9.25 Feb 6, 2013
libmicrohttpd.pc.in pkg-config without https, too Feb 17, 2009

README

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.

Especially for development, do use the MHD_USE_DEBUG 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

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, 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.


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
- MHD basic and digest authentication


Functions 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)


Missing documentation:
======================

- manual:
  * document configuration options
  * document details on porting MHD (plibc, z/OS)