a mirror of the embedded httpd http server for c and c++
#embedded #httpd #http-server #lightweight #embeddable #library

Christian Grothoff 90bfe2380b space před 17 roky
contrib 4f5e802908 more code cleanup před 17 roky
doc 90bfe2380b space před 17 roky
m4 de01a4af74 libcurl detection macro před 19 roky
src a60850c633 fixing 1425 před 17 roky
AUTHORS e73cff1fdd vxworks diff from Thomas Martin před 17 roky
COPYING 2ea86dd04a lgpl před 18 roky
ChangeLog 57168ecea1 rel před 17 roky
INSTALL a7cd9f029a docus před 18 roky
Makefile.am 4f5e802908 more code cleanup před 17 roky
NEWS 1eecc125a9 more před 19 roky
README c673c4dd99 up před 17 roky
acinclude.m4 075c3c4203 fixing z/OS build issues před 17 roky
bootstrap 425a9ca5ba automake před 18 roky
configure.ac d550af2a10 update před 17 roky

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


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 code is still too large (plenty of dead or
unnecessary code imported from gnuTLS)
- Make sure SSL works on non-GNU/Linux platforms
- Fix compiler warnings in gnuTLS code
(largely signed vs. unsigned char)


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


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
* change example code to follow GNU coding conventions
* provide examples for using SSL