GNU Libmicrohttpd

GNU libmicrohttpd is a small C library that is supposed to make it easy to run an HTTP server as part of another application. GNU Libmicrohttpd is free software and part of the GNU project. Key features that distinguish GNU Libmicrohttpd from other projects are:

C library: fast and small

API is simple, expressive and fully reentrant

Implementation is HTTP 1.1 compliant

HTTP server can listen on multiple ports

Four different threading modes (select, poll, pthread, thread pool)

Supported platforms include GNU/Linux, FreeBSD, OpenBSD, NetBSD, Android, Darwin (macOS), W32, OpenIndiana/Solaris and z/OS

Support for IPv6

Support for SHOUTcast

Support for incremental processing of POST data (optional)

Support for basic and digest authentication (optional)

Support for TLS (requires libgnutls, optional)

Binary is only about 32k (without TLS support and other optional features)

GNU Libmicrohttpd was started because the author needed an easy way to add a concurrent HTTP server to other projects. Existing alternatives were either non-free, not reentrant, standalone, of terrible code quality or a combination thereof. Do not use GNU Libmicrohttpd if you are looking for a standalone HTTP server, there are many other projects out there that provide that kind of functionality already. However, if you want to be able to serve simple WWW pages from within your C or C++ application, check it out.

Downloading Libmicrohttpd

Documentation

In addition to the brief documentation on this webpage, we have various other forms of documentation available:

Mailing lists

Libmicrohttpd uses the libmicrohttpd mailinglist to discuss all aspects of Libmicrohttpd, including support, development and enhancement requests, as well as bug reports.

Announcements about Libmicrohttpd and most other GNU software are made on info-gnu (archive).

Security reports that should not be made immediately public can be sent directly to the maintainer. If there is no response to an urgent issue, you can escalate to the general security mailing list for advice.

Getting involved

Development of Libmicrohttpd, and GNU in general, is a volunteer effort, and you can contribute. For information, please read How to help GNU. If you'd like to get involved, it's a good idea to join the discussion mailing list (see above).

Development Known bugs and open feature requests are tracked in our bugtracker. You need to sign up for a reporter account. Please make sure you report bugs under libmicrohttpd and not under any of the other projects. Subversion access You can access the current development version of libmicrohttpd using $ git clone https://git.gnunet.org/libmicrohttpd.git Our website is kept at $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/web/libmicrohttpd co libmicrohttpd

Quick Introduction

Licensing

Libmicrohttpd is free software; you can redistribute it and/or modify it under the GNU LGPL v2.1 or at your option any later version. If you disable HTTPS/TLS support, you can also choose the second license, the eCos License. If you have questions about licensing, please contact the maintainer.