[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r12969 - libmicrohttpd-docs/WWW
From: |
gnunet |
Subject: |
[GNUnet-SVN] r12969 - libmicrohttpd-docs/WWW |
Date: |
Fri, 10 Sep 2010 14:56:57 +0200 |
Author: grothoff
Date: 2010-09-10 14:56:57 +0200 (Fri, 10 Sep 2010)
New Revision: 12969
Modified:
libmicrohttpd-docs/WWW/index.html
libmicrohttpd-docs/WWW/microhttpd.html
libmicrohttpd-docs/WWW/microhttpd.pdf
libmicrohttpd-docs/WWW/tutorial.html
libmicrohttpd-docs/WWW/tutorial.pdf
Log:
release
Modified: libmicrohttpd-docs/WWW/index.html
===================================================================
--- libmicrohttpd-docs/WWW/index.html 2010-09-10 12:54:07 UTC (rev 12968)
+++ libmicrohttpd-docs/WWW/index.html 2010-09-10 12:56:57 UTC (rev 12969)
@@ -9,7 +9,7 @@
<meta name="robots" content="index,follow">
<meta name="revisit-after" content="28 days">
<meta name="publisher" content="Christian Grothoff">
-<meta name="date" content="2010-7-26">
+<meta name="date" content="2010-9-10">
<meta name="rights" content="(C) 2007, 2008, 2009, 2010 by Christian
Grothoff>";
<meta http-equiv="expires" content="43200">
</head>
@@ -30,6 +30,7 @@
<li>HTTP server can listen on multiple ports</li>
<li>Support for IPv6</li>
<li>Support for incremental processing of POST data</li>
+<li>Support for digest authentication</li>
<li>Creates binary of only 32k (without TLS/SSL support)</li>
<li>Four different threading models (select, poll, pthread, thread pool)</li>
<li>Supported platforms include GNU/Linux, FreeBSD, OpenBSD, NetBSD,
Modified: libmicrohttpd-docs/WWW/microhttpd.html
===================================================================
--- libmicrohttpd-docs/WWW/microhttpd.html 2010-09-10 12:54:07 UTC (rev
12968)
+++ libmicrohttpd-docs/WWW/microhttpd.html 2010-09-10 12:56:57 UTC (rev
12969)
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html401/loose.dtd">
<html>
-<!-- This manual documents GNU libmicrohttpd version 0.9.0, last
-updated 26 July 2010. It is built upon the documentation in the
+<!-- This manual documents GNU libmicrohttpd version 0.9.1, last
+updated 10 September 2010. It is built upon the documentation in the
header file microhttpd.h.
@@ -16,7 +16,7 @@
GNU libmicrohttpd is a GNU package.
-->
-<!-- Created on July 26, 2010 by texi2html 1.82
+<!-- Created on September 10, 2010 by texi2html 1.82
texi2html was written by:
Lionel Cons <address@hidden> (original author)
Karl Berry <address@hidden>
@@ -66,8 +66,8 @@
</tr></table>
<a name="The-GNU-libmicrohttpd-Library"></a>
<h1 class="settitle">The GNU libmicrohttpd Library</h1>
-<p>This manual documents GNU libmicrohttpd version 0.9.0, last
-updated 26 July 2010. It is built upon the documentation in the
+<p>This manual documents GNU libmicrohttpd version 0.9.1, last
+updated 10 September 2010. It is built upon the documentation in the
header file ‘<tt>microhttpd.h</tt>’.
</p>
@@ -92,8 +92,9 @@
<tr><td align="left" valign="top"><a href="#microhttpd_002drequests">7.
Handling requests</a></td><td> </td><td align="left"
valign="top"></td></tr>
<tr><td align="left" valign="top"><a href="#microhttpd_002dresponses">8.
Building answers to responses</a></td><td> </td><td align="left"
valign="top"> Building responses to requests.
</td></tr>
-<tr><td align="left" valign="top"><a href="#microhttpd_002dpost">9. Adding a
<code>POST</code> processor</a></td><td> </td><td align="left"
valign="top"></td></tr>
-<tr><td align="left" valign="top"><a href="#microhttpd_002dinfo">10. Obtaining
status information.</a></td><td> </td><td align="left"
valign="top"></td></tr>
+<tr><td align="left" valign="top"><a href="#microhttpd_002ddauth">9. Utilizing
Digest Authentication</a></td><td> </td><td align="left"
valign="top"></td></tr>
+<tr><td align="left" valign="top"><a href="#microhttpd_002dpost">10. Adding a
<code>POST</code> processor</a></td><td> </td><td align="left"
valign="top"></td></tr>
+<tr><td align="left" valign="top"><a href="#microhttpd_002dinfo">11. Obtaining
status information.</a></td><td> </td><td align="left"
valign="top"></td></tr>
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
Appendices
@@ -122,7 +123,7 @@
<a name="microhttpd_002dintro"></a>
<table cellpadding="1" cellspacing="1" border="0">
<tr><td valign="middle" align="left">[<a href="#Top" title="Previous section
in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#SIGPIPE" title="Next section in
reading order"> > </a>]</td>
+<td valign="middle" align="left">[<a
href="#Including-the-microhttpd_002eh-header" title="Next section in reading
order"> > </a>]</td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left">[<a href="#Top" title="Beginning of this
chapter or previous chapter"> << </a>]</td>
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up
</a>]</td>
@@ -180,9 +181,49 @@
used per connection to avoid resource exhaustion.
</p>
<hr size="6">
+<a name="Including-the-microhttpd_002eh-header"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#microhttpd_002dintro"
title="Previous section in reading order"> < </a>]</td>
+<td valign="middle" align="left">[<a href="#SIGPIPE" title="Next section in
reading order"> > </a>]</td>
+<td valign="middle" align="left"> </td>
+<td valign="middle" align="left">[<a href="#microhttpd_002dintro"
title="Beginning of this chapter or previous chapter"> << </a>]</td>
+<td valign="middle" align="left">[<a href="#microhttpd_002dintro" title="Up
section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#microhttpd_002dconst" title="Next
chapter"> >> </a>]</td>
+<td valign="middle" align="left"> </td>
+<td valign="middle" align="left"> </td>
+<td valign="middle" align="left"> </td>
+<td valign="middle" align="left"> </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of
document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of
contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Concept-Index"
title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ?
</a>]</td>
+</tr></table>
+<h2 class="section">1.1 Including the microhttpd.h header</h2>
+<a name="index-portability"></a>
+<a name="index-microhttpd_002eh"></a>
+
+<p>Ideally, before including "microhttpd.h" you should add the
necessary
+includes to define the <code>uint64_t</code>, <code>size_t</code>,
<code>fd_set</code>,
+<code>socklen_t</code> and <code>struct sockaddr</code> data types. Which
+specific headers are needed may depend on your platform and your build
+system might include some tests to provide you with the necessary
+conditional operations. For possible suggestions consult
+<code>platform.h</code> and <code>configure.ac</code> in the MHD distribution.
+</p>
+<p>Once you have ensured that you manually (!) included the right headers
+for your platform before "microhttpd.h", you should also add a line
+with <code>#define MHD_PLATFORM_H</code> which will prevent the
+"microhttpd.h" header from trying (and, depending on your platform,
+failing) to include the right headers.
+</p>
+<p>If you do not define MHD_PLATFORM_H, the "microhttpd.h" header
will
+automatically include headers needed on GNU/Linux systems (possibly
+causing problems when porting to other platforms).
+</p>
+<hr size="6">
<a name="SIGPIPE"></a>
<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#microhttpd_002dintro"
title="Previous section in reading order"> < </a>]</td>
+<tr><td valign="middle" align="left">[<a
href="#Including-the-microhttpd_002eh-header" title="Previous section in
reading order"> < </a>]</td>
<td valign="middle" align="left">[<a href="#microhttpd_002dconst" title="Next
section in reading order"> > </a>]</td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left">[<a href="#microhttpd_002dintro"
title="Beginning of this chapter or previous chapter"> << </a>]</td>
@@ -197,7 +238,7 @@
<td valign="middle" align="left">[<a href="#Concept-Index"
title="Index">Index</a>]</td>
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ?
</a>]</td>
</tr></table>
-<h2 class="section">1.1 SIGPIPE</h2>
+<h2 class="section">1.2 SIGPIPE</h2>
<a name="index-signals"></a>
<p><acronym>MHD</acronym> does not install a signal handler for SIGPIPE. On
platforms
where this is possible (such as GNU/Linux), it disables SIGPIPE for
@@ -285,7 +326,6 @@
run-time option to have any effect, <acronym>MHD</acronym> needs to be
compiled with messages enabled. This is done by default except you ran
configure with the <code>--disable-messages</code> flag set.
-
</p>
</dd>
<dt> <code>MHD_USE_SSL</code></dt>
@@ -353,8 +393,28 @@
<code>unsigned int</code>). The default is <code>FD_SETSIZE - 4</code> (the
maximum number of file descriptors supported by <code>select</code> minus
four for <code>stdin</code>, <code>stdout</code>, <code>stderr</code> and the
server
-socket). In other words, the default is as large as possible.
+socket). In other words, the default is as large as possible.
</p>
+<p>Note that if you set a low connection limit, you can easily get into
+trouble with browsers doing request pipelining. For example, if your
+connection limit is “1”, a browser may open a first connection to
+access your “index.html” file, keep it open but use a second
+connection to retrieve CSS files, images and the like. In fact, modern
+browsers are typically by default configured for up to 15 parallel
+connections to a single server. If this happens, MHD will refuse to
+even accept the second connection until the first connection is
+closed — which does not happen until timeout. As a result, the
+browser will fail to render the page and seem to hang. If you expect
+your server to operate close to the connection limit, you should
+first consider using a lower timeout value and also possibly add
+a “Connection: close” header to your response to ensure that
+request pipelining is not used and connections are closed immediately
+after the request has completed:
+</p><table><tr><td> </td><td><pre class="example">MHD_add_response_header
(response,
+ MHD_HTTP_HEADER_CONNECTION,
+ "close");
+</pre></td></tr></table>
+
</dd>
<dt> <code>MHD_OPTION_CONNECTION_TIMEOUT</code></dt>
<dd><a name="index-timeout"></a>
@@ -457,8 +517,45 @@
are acceptable for the application. The string is passed
unchanged to gnutls_priority_init. If this option is not
specified, “NORMAL” is used.
-</p>
+</p>
</dd>
+<dt> <code>MHD_OPTION_DIGEST_AUTH_RANDOM</code></dt>
+<dd><a name="index-digest-auth"></a>
+<a name="index-random"></a>
+<p>Digest Authentication nonce’s seed.
+</p>
+<p>This option should be followed by two arguments. First an integer of
+type "size_t" which specifies the size of the buffer pointed to by
the
+second argument in bytes. Note that the application must ensure that
+the buffer of the second argument remains allocated and unmodified
+while the deamon is running. For security, you SHOULD provide a fresh
+random nonce when using MHD with Digest Authentication.
+</p>
+</dd>
+<dt> <code>MHD_OPTION_NONCE_NC_SIZE</code></dt>
+<dd><a name="index-digest-auth-1"></a>
+<a name="index-replay-attack"></a>
+
+<p>Size of an array of nonce and nonce counter map. This option must be
+followed by an "unsigned int" argument that have the size (number of
+elements) of a map of a nonce and a nonce-counter. If this option
+is not specified, a default value of 4 will be used (which might be
+too small for servers handling many requests). If you do not use
+digest authentication at all, you can specify a value of zero to
+save some memory.
+</p>
+<p>You should calculate the value of NC_SIZE based on the number of
+connections per second multiplied by your expected session duration
+plus a factor of about two for hash table collisions. For example, if
+you expect 100 digest-authenticated connections per second and the
+average user to stay on your site for 5 minutes, then you likely need
+a value of about 60000. On the other hand, if you can only expect
+only 10 digest-authenticated connections per second, tolerate browsers
+getting a fresh nonce for each request and expect a HTTP request
+latency of 250 ms, then a value of about 5 should be fine.
+</p>
+
+</dd>
<dt> <code>MHD_OPTION_LISTEN_SOCKET</code></dt>
<dd><a name="index-systemd"></a>
<p>Listen socket to use. Pass a listen socket for MHD to use
@@ -476,11 +573,9 @@
and the second a pointer of type ’void*’ which will
be passed as the "arg" argument to "fun".
</p>
-<p>
-Note that MHD will not generate any log messages without
+<p>Note that MHD will not generate any log messages without
the MHD_USE_DEBUG flag set and if MHD was compiled
-with the "––disable-messages" flag.
-
+with the "–disable-messages" flag.
</p>
</dd>
<dt> <code>MHD_OPTION_THREAD_POOL_SIZE</code></dt>
@@ -495,6 +590,7 @@
</dd>
<dt> <code>MHD_OPTION_ARRAY</code></dt>
<dd><a name="index-options"></a>
+<a name="index-foreign_002dfunction-interface"></a>
<p>This option can be used for initializing MHD using options from an
array. A common use for this is writing an FFI for MHD. The actual
options given are in an array of ’struct MHD_OptionItem’, so this
@@ -515,6 +611,27 @@
second member of the <code>struct MHD_OptionItem</code> is ignored.
For options that expect two pointer arguments, the first
argument must be cast to <code>intptr_t</code>.
+</p>
+</dd>
+<dt> <code>MHD_OPTION_UNESCAPE_CALLBACK</code></dt>
+<dd><a name="index-internationalization"></a>
+<a name="index-escaping"></a>
+
+<p>Specify a function that should be called for unescaping escape
+sequences in URIs and URI arguments. Note that this function will NOT
+be used by the MHD_PostProcessor. If this option is not specified,
+the default method will be used which decodes escape sequences of the
+form "%HH". This option should be followed by two arguments, the
+first one must be of the form
+</p>
+<table><tr><td> </td><td><pre class="example"> size_t my_unescaper(void
* cls, struct MHD_Connection *c, char *s)
+</pre></td></tr></table>
+
+<p>where the return value must be <code>strlen(s)</code> and <code>s</code>
should be
+updated. Note that the unescape function must not lengthen <code>s</code>
+(the result must be shorter than the input and still be 0-terminated).
+<code>cls</code> will be set to the second argument following
+MHD_OPTION_UNESCAPE_CALLBACK.
</p></dd>
</dl>
</dd></dl>
@@ -1224,7 +1341,7 @@
<td valign="middle" align="left"> </td>
<td valign="middle" align="left">[<a href="#microhttpd_002drequests"
title="Beginning of this chapter or previous chapter"> << </a>]</td>
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up
</a>]</td>
-<td valign="middle" align="left">[<a href="#microhttpd_002dpost" title="Next
chapter"> >> </a>]</td>
+<td valign="middle" align="left">[<a href="#microhttpd_002ddauth" title="Next
chapter"> >> </a>]</td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
@@ -1269,7 +1386,7 @@
<td valign="middle" align="left"> </td>
<td valign="middle" align="left">[<a href="#microhttpd_002dresponses"
title="Beginning of this chapter or previous chapter"> << </a>]</td>
<td valign="middle" align="left">[<a href="#microhttpd_002dresponses"
title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#microhttpd_002dpost" title="Next
chapter"> >> </a>]</td>
+<td valign="middle" align="left">[<a href="#microhttpd_002ddauth" title="Next
chapter"> >> </a>]</td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
@@ -1362,7 +1479,7 @@
<td valign="middle" align="left"> </td>
<td valign="middle" align="left">[<a href="#microhttpd_002dresponses"
title="Beginning of this chapter or previous chapter"> << </a>]</td>
<td valign="middle" align="left">[<a href="#microhttpd_002dresponses"
title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#microhttpd_002dpost" title="Next
chapter"> >> </a>]</td>
+<td valign="middle" align="left">[<a href="#microhttpd_002ddauth" title="Next
chapter"> >> </a>]</td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
@@ -1485,7 +1602,7 @@
<td valign="middle" align="left"> </td>
<td valign="middle" align="left">[<a href="#microhttpd_002dresponses"
title="Beginning of this chapter or previous chapter"> << </a>]</td>
<td valign="middle" align="left">[<a href="#microhttpd_002dresponses"
title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#microhttpd_002dpost" title="Next
chapter"> >> </a>]</td>
+<td valign="middle" align="left">[<a href="#microhttpd_002ddauth" title="Next
chapter"> >> </a>]</td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
@@ -1525,11 +1642,11 @@
<a name="microhttpd_002dresponse-inspect"></a>
<table cellpadding="1" cellspacing="1" border="0">
<tr><td valign="middle" align="left">[<a
href="#microhttpd_002dresponse-headers" title="Previous section in reading
order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#microhttpd_002dpost" title="Next
section in reading order"> > </a>]</td>
+<td valign="middle" align="left">[<a href="#microhttpd_002ddauth" title="Next
section in reading order"> > </a>]</td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left">[<a href="#microhttpd_002dresponses"
title="Beginning of this chapter or previous chapter"> << </a>]</td>
<td valign="middle" align="left">[<a href="#microhttpd_002dresponses"
title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#microhttpd_002dpost" title="Next
chapter"> >> </a>]</td>
+<td valign="middle" align="left">[<a href="#microhttpd_002ddauth" title="Next
chapter"> >> </a>]</td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
@@ -1570,13 +1687,138 @@
<hr size="6">
-<a name="microhttpd_002dpost"></a>
+<a name="microhttpd_002ddauth"></a>
<table cellpadding="1" cellspacing="1" border="0">
<tr><td valign="middle" align="left">[<a
href="#microhttpd_002dresponse-inspect" title="Previous section in reading
order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#microhttpd_002dpost-api"
title="Next section in reading order"> > </a>]</td>
+<td valign="middle" align="left">[<a href="#microhttpd_002dpost" title="Next
section in reading order"> > </a>]</td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left">[<a href="#microhttpd_002dresponses"
title="Beginning of this chapter or previous chapter"> << </a>]</td>
<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up
</a>]</td>
+<td valign="middle" align="left">[<a href="#microhttpd_002dpost" title="Next
chapter"> >> </a>]</td>
+<td valign="middle" align="left"> </td>
+<td valign="middle" align="left"> </td>
+<td valign="middle" align="left"> </td>
+<td valign="middle" align="left"> </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of
document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of
contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Concept-Index"
title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ?
</a>]</td>
+</tr></table>
+<a name="Utilizing-Digest-Authentication"></a>
+<h1 class="chapter">9. Utilizing Digest Authentication</h1>
+
+<dl>
+<dt><a
name="index-MHD_005fdigest_005fauth_005fget_005fusername"></a><u>Function:</u>
char * <b>MHD_digest_auth_get_username</b><i> (struct MHD_Connection
*connection)</i></dt>
+<dd><p>Find and return a pointer to the username value from the request header.
+Return <code>NULL</code> if the value is not found or header does not exist.
+If returned value is not <code>NULL</code>, the value must be free()’ed.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-MHD_005fdigest_005fauth_005fcheck"></a><u>Function:</u> int
<b>MHD_digest_auth_check</b><i> (struct MHD_Connection *connection, const char
*realm, const char *username, const char *password, unsigned int
nonce_timeout)</i></dt>
+<dd><p>Checks if the provided values in the WWW-Authenticate header are valid
+and sound according to RFC2716. If valid return MHD_YES, otherwise return
MHD_NO.
+</p>
+<p><var>realm</var> must reference to a zero-terminated string representing
the realm.
+</p>
+<p><var>username</var> must reference to a zero-terminated string representing
the username,
+it is usually the returned value from MHD_digest_auth_get_username.
+</p>
+<p><var>password</var> must reference to a zero-terminated string representing
the password,
+most probably it will be the result of a lookup of the username against a
local database.
+</p>
+<p><var>nonce_timeout</var> is the amount of time in seconds for a nonce to be
invalid.
+Most of the time it is sound to specify 300 seconds as its values.
+</p></dd></dl>
+
+<dl>
+<dt><a
name="index-MHD_005fqueue_005fauth_005ffail_005fresponse"></a><u>Function:</u>
int <b>MHD_queue_auth_fail_response</b><i> (struct MHD_Connection *connection,
const char *realm, const char *opaque, struct MHD_Response *response, int
signal_stale)</i></dt>
+<dd><p>Queues a response to request authentication from the client,
+return MHD_YES if successful, otherwise MHD_NO.
+</p>
+<p><var>opaque</var> must reference to a zero-terminated string representing a
value
+that gets passed to the client and expected to be passed again to the server
+as-is. This value can be a hexadecimal or base64 string.
+</p>
+<p><var>response</var> a response structure to specify what shall be presented
to the
+client with a 401 HTTP status.
+</p>
+<p><var>signal_stale</var> a value that signals "stale=true" in the
response header to
+indicate the invalidity of the nonce and no need to ask for authentication
+parameters and only a new nonce gets generated. MHD_YES to generate a new
+nonce, MHD_NO to ask for authentication parameters.
+</p></dd></dl>
+
+<p>Example: handling digest authentication requests and responses.
+</p>
+<table><tr><td> </td><td><pre class="example">#define PAGE
"<html><head><title>libmicrohttpd
demo</title></head><body>Access
granted</body></html>"
+#define DENIED "<html><head><title>libmicrohttpd
demo</title></head><body>Access
denied</body></html>"
+#define OPAQUE "11733b200778ce33060f31c9af70a870ba96ddd4"
+
+static int
+ahc_echo (void *cls,
+ struct MHD_Connection *connection,
+ const char *url,
+ const char *method,
+ const char *version,
+ const char *upload_data, size_t *upload_data_size, void **ptr)
+{
+ struct MHD_Response *response;
+ char *username;
+ const char *password = "testpass";
+ const char *realm = "address@hidden";
+ int ret;
+
+ username = MHD_digest_auth_get_username(connection);
+ if (username == NULL)
+ {
+ response = MHD_create_response_from_data(strlen (DENIED),
+ DENIED,
+ MHD_NO, MHD_NO);
+ ret = MHD_queue_auth_fail_response(connection, realm,
+ OPAQUE,
+ response,
+ MHD_NO);
+ MHD_destroy_response(response);
+ return ret;
+ }
+ ret = MHD_digest_auth_check(connection, realm,
+ username,
+ password,
+ 300);
+ free(username);
+ if ( (ret == MHD_INVALID_NONCE) ||
+ (ret == MHD_NO) )
+ {
+ response = MHD_create_response_from_data(strlen (DENIED),
+ DENIED,
+ MHD_NO, MHD_NO);
+ if (NULL == response)
+ return MHD_NO;
+ ret = MHD_queue_auth_fail_response(connection, realm,
+ OPAQUE,
+ response,
+ (ret == MHD_INVALID_NONCE) ? MHD_YES :
MHD_NO);
+ MHD_destroy_response(response);
+ return ret;
+ }
+ response = MHD_create_response_from_data(strlen(PAGE), PAGE,
+ MHD_NO, MHD_NO);
+ ret = MHD_queue_response(connection, MHD_HTTP_OK, response);
+ MHD_destroy_response(response);
+ return ret;
+}
+</pre></td></tr></table>
+
+
+<hr size="6">
+<a name="microhttpd_002dpost"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#microhttpd_002ddauth"
title="Previous section in reading order"> < </a>]</td>
+<td valign="middle" align="left">[<a href="#microhttpd_002dpost-api"
title="Next section in reading order"> > </a>]</td>
+<td valign="middle" align="left"> </td>
+<td valign="middle" align="left">[<a href="#microhttpd_002ddauth"
title="Beginning of this chapter or previous chapter"> << </a>]</td>
+<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up
</a>]</td>
<td valign="middle" align="left">[<a href="#microhttpd_002dinfo" title="Next
chapter"> >> </a>]</td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
@@ -1588,11 +1830,11 @@
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ?
</a>]</td>
</tr></table>
<a name="Adding-a-POST-processor"></a>
-<h1 class="chapter">9. Adding a <code>POST</code> processor</h1>
+<h1 class="chapter">10. Adding a <code>POST</code> processor</h1>
<a name="index-POST-method-3"></a>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#microhttpd_002dpost-api">9.1
Programming interface for the <code>POST</code>
processor</a></td><td> </td><td align="left" valign="top"></td></tr>
+<tr><td align="left" valign="top"><a href="#microhttpd_002dpost-api">10.1
Programming interface for the <code>POST</code>
processor</a></td><td> </td><td align="left" valign="top"></td></tr>
</table>
@@ -1695,7 +1937,7 @@
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ?
</a>]</td>
</tr></table>
<a name="Programming-interface-for-the-POST-processor"></a>
-<h2 class="section">9.1 Programming interface for the <code>POST</code>
processor</h2>
+<h2 class="section">10.1 Programming interface for the <code>POST</code>
processor</h2>
<a name="index-POST-method-4"></a>
<dl>
@@ -1795,13 +2037,13 @@
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ?
</a>]</td>
</tr></table>
<a name="Obtaining-status-information_002e"></a>
-<h1 class="chapter">10. Obtaining status information.</h1>
+<h1 class="chapter">11. Obtaining status information.</h1>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#microhttpd_002dinfo-daemon">10.1
Obtaining state information about an MHD
daemon</a></td><td> </td><td align="left" valign="top"> State
information about an MHD daemon
+<tr><td align="left" valign="top"><a href="#microhttpd_002dinfo-daemon">11.1
Obtaining state information about an MHD
daemon</a></td><td> </td><td align="left" valign="top"> State
information about an MHD daemon
</td></tr>
-<tr><td align="left" valign="top"><a href="#microhttpd_002dinfo-conn">10.2
Obtaining state information about a connection</a></td><td> </td><td
align="left" valign="top"> State information about a connection
+<tr><td align="left" valign="top"><a href="#microhttpd_002dinfo-conn">11.2
Obtaining state information about a connection</a></td><td> </td><td
align="left" valign="top"> State information about a connection
</td></tr>
</table>
@@ -1825,7 +2067,7 @@
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ?
</a>]</td>
</tr></table>
<a name="Obtaining-state-information-about-an-MHD-daemon"></a>
-<h2 class="section">10.1 Obtaining state information about an MHD daemon</h2>
+<h2 class="section">11.1 Obtaining state information about an MHD daemon</h2>
<dl>
<dt><a name="index-MHD_005fget_005fdaemon_005finfo"></a><u>Function:</u> const
union MHD_DaemonInfo * <b>MHD_get_daemon_info</b><i> (struct MHD_Daemon
*daemon, enum MHD_DaemonInfoType infoType, ...)</i></dt>
@@ -1872,7 +2114,7 @@
<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ?
</a>]</td>
</tr></table>
<a name="Obtaining-state-information-about-a-connection"></a>
-<h2 class="section">10.2 Obtaining state information about a connection</h2>
+<h2 class="section">11.2 Obtaining state information about a connection</h2>
<dl>
@@ -3461,6 +3703,8 @@
<a href="#Concept-Index-1_cp_letter-Q" class="summary-letter"><b>Q</b></a>
+<a href="#Concept-Index-1_cp_letter-R" class="summary-letter"><b>R</b></a>
+
<a href="#Concept-Index-1_cp_letter-S" class="summary-letter"><b>S</b></a>
<a href="#Concept-Index-1_cp_letter-T" class="summary-letter"><b>T</b></a>
@@ -3480,17 +3724,22 @@
<tr><th><a name="Concept-Index-1_cp_letter-D">D</a></th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-debugging">debugging</a></td><td
valign="top"><a href="#microhttpd_002dconst">2. Constants</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-debugging-1">debugging</a></td><td valign="top"><a
href="#microhttpd_002dconst">2. Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-digest-auth">digest
auth</a></td><td valign="top"><a href="#microhttpd_002dconst">2.
Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-digest-auth-1">digest
auth</a></td><td valign="top"><a href="#microhttpd_002dconst">2.
Constants</a></td></tr>
<tr><td colspan="3"> <hr></td></tr>
<tr><th><a name="Concept-Index-1_cp_letter-E">E</a></th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a
href="#index-eCos_002c-GNU-General-Public-License-with-eCos-Extension">eCos,
GNU General Public License with eCos Extension</a></td><td valign="top"><a
href="#GNU-GPL-with-eCos-Extension">GNU GPL with eCos Extension</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-escaping">escaping</a></td><td
valign="top"><a href="#microhttpd_002dconst">2. Constants</a></td></tr>
<tr><td colspan="3"> <hr></td></tr>
<tr><th><a name="Concept-Index-1_cp_letter-F">F</a></th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a
href="#index-FD_005fSETSIZE">FD_SETSIZE</a></td><td valign="top"><a
href="#microhttpd_002dconst">2. Constants</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-foreign_002dfunction-interface">foreign-function
interface</a></td><td valign="top"><a href="#microhttpd_002dconst">2.
Constants</a></td></tr>
<tr><td colspan="3"> <hr></td></tr>
<tr><th><a name="Concept-Index-1_cp_letter-G">G</a></th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a
href="#index-GPL_002c-GNU-General-Public-License">GPL, GNU General Public
License</a></td><td valign="top"><a href="#GNU-GPL-with-eCos-Extension">GNU GPL
with eCos Extension</a></td></tr>
<tr><td colspan="3"> <hr></td></tr>
<tr><th><a name="Concept-Index-1_cp_letter-I">I</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-internationalization">internationalization</a></td><td
valign="top"><a href="#microhttpd_002dconst">2. Constants</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-IPv6">IPv6</a></td><td
valign="top"><a href="#microhttpd_002dconst">2. Constants</a></td></tr>
<tr><td colspan="3"> <hr></td></tr>
<tr><th><a name="Concept-Index-1_cp_letter-L">L</a></th><td></td><td></td></tr>
@@ -3503,6 +3752,7 @@
<tr><td colspan="3"> <hr></td></tr>
<tr><th><a name="Concept-Index-1_cp_letter-M">M</a></th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a
href="#index-memory_002c-limiting-memory-utilization">memory, limiting memory
utilization</a></td><td valign="top"><a href="#microhttpd_002dconst">2.
Constants</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-microhttpd_002eh">microhttpd.h</a></td><td valign="top"><a
href="#Including-the-microhttpd_002eh-header">1.1 Including the microhttpd.h
header</a></td></tr>
<tr><td colspan="3"> <hr></td></tr>
<tr><th><a name="Concept-Index-1_cp_letter-O">O</a></th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-options">options</a></td><td
valign="top"><a href="#microhttpd_002dconst">2. Constants</a></td></tr>
@@ -3510,19 +3760,24 @@
<tr><th><a name="Concept-Index-1_cp_letter-P">P</a></th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a
href="#index-performance">performance</a></td><td valign="top"><a
href="#microhttpd_002dconst">2. Constants</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-poll">poll</a></td><td
valign="top"><a href="#microhttpd_002dconst">2. Constants</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-portability">portability</a></td><td valign="top"><a
href="#Including-the-microhttpd_002eh-header">1.1 Including the microhttpd.h
header</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-POST-method">POST
method</a></td><td valign="top"><a href="#microhttpd_002dconst">2.
Constants</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-POST-method-1">POST
method</a></td><td valign="top"><a href="#microhttpd_002dstruct">3. Structures
type definition</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-POST-method-2">POST
method</a></td><td valign="top"><a href="#microhttpd_002dcb">4. Callback
functions definition</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-POST-method-3">POST
method</a></td><td valign="top"><a href="#microhttpd_002dpost">9. Adding a
<code>POST</code> processor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-POST-method-4">POST
method</a></td><td valign="top"><a href="#microhttpd_002dpost-api">9.1
Programming interface for the <code>POST</code> processor</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-POST-method-3">POST
method</a></td><td valign="top"><a href="#microhttpd_002dpost">10. Adding a
<code>POST</code> processor</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-POST-method-4">POST
method</a></td><td valign="top"><a href="#microhttpd_002dpost-api">10.1
Programming interface for the <code>POST</code> processor</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-PUT-method">PUT
method</a></td><td valign="top"><a href="#microhttpd_002dcb">4. Callback
functions definition</a></td></tr>
<tr><td colspan="3"> <hr></td></tr>
<tr><th><a name="Concept-Index-1_cp_letter-Q">Q</a></th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-query-string">query
string</a></td><td valign="top"><a href="#microhttpd_002dconst">2.
Constants</a></td></tr>
<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-Index-1_cp_letter-R">R</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-random">random</a></td><td
valign="top"><a href="#microhttpd_002dconst">2. Constants</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-replay-attack">replay
attack</a></td><td valign="top"><a href="#microhttpd_002dconst">2.
Constants</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
<tr><th><a name="Concept-Index-1_cp_letter-S">S</a></th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-select">select</a></td><td
valign="top"><a href="#microhttpd_002dconst">2. Constants</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-signals">signals</a></td><td
valign="top"><a href="#SIGPIPE">1.1 SIGPIPE</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-signals">signals</a></td><td
valign="top"><a href="#SIGPIPE">1.2 SIGPIPE</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-SSL">SSL</a></td><td
valign="top"><a href="#microhttpd_002dconst">2. Constants</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-SSL-1">SSL</a></td><td
valign="top"><a href="#microhttpd_002dconst">2. Constants</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-SSL-2">SSL</a></td><td
valign="top"><a href="#microhttpd_002dconst">2. Constants</a></td></tr>
@@ -3563,6 +3818,8 @@
<a href="#Concept-Index-1_cp_letter-Q" class="summary-letter"><b>Q</b></a>
+<a href="#Concept-Index-1_cp_letter-R" class="summary-letter"><b>R</b></a>
+
<a href="#Concept-Index-1_cp_letter-S" class="summary-letter"><b>S</b></a>
<a href="#Concept-Index-1_cp_letter-T" class="summary-letter"><b>T</b></a>
@@ -3610,22 +3867,25 @@
<tr><td colspan="3"> <hr></td></tr>
<tr><th><a
name="Function-and-Data-Index-1_fn_letter-M">M</a></th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a
href="#index-MHD_005fadd_005fresponse_005fheader"><code>MHD_add_response_header</code></a></td><td
valign="top"><a href="#microhttpd_002dresponse-headers">8.3 Adding headers to
a response</a></td></tr>
-<tr><td></td><td valign="top"><a
href="#index-MHD_005fcreate_005fpost_005fprocessor"><code>MHD_create_post_processor</code></a></td><td
valign="top"><a href="#microhttpd_002dpost-api">9.1 Programming interface for
the <code>POST</code> processor</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-MHD_005fcreate_005fpost_005fprocessor"><code>MHD_create_post_processor</code></a></td><td
valign="top"><a href="#microhttpd_002dpost-api">10.1 Programming interface for
the <code>POST</code> processor</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-MHD_005fcreate_005fresponse_005ffrom_005fcallback"><code>MHD_create_response_from_callback</code></a></td><td
valign="top"><a href="#microhttpd_002dresponse-create">8.2 Creating response
objects</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-MHD_005fcreate_005fresponse_005ffrom_005fdata"><code>MHD_create_response_from_data</code></a></td><td
valign="top"><a href="#microhttpd_002dresponse-create">8.2 Creating response
objects</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-MHD_005fcreate_005fresponse_005ffrom_005ffd"><code>MHD_create_response_from_fd</code></a></td><td
valign="top"><a href="#microhttpd_002dresponse-create">8.2 Creating response
objects</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-MHD_005fdel_005fresponse_005fheader"><code>MHD_del_response_header</code></a></td><td
valign="top"><a href="#microhttpd_002dresponse-headers">8.3 Adding headers to
a response</a></td></tr>
-<tr><td></td><td valign="top"><a
href="#index-MHD_005fdestroy_005fpost_005fprocessor"><code>MHD_destroy_post_processor</code></a></td><td
valign="top"><a href="#microhttpd_002dpost-api">9.1 Programming interface for
the <code>POST</code> processor</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-MHD_005fdestroy_005fpost_005fprocessor"><code>MHD_destroy_post_processor</code></a></td><td
valign="top"><a href="#microhttpd_002dpost-api">10.1 Programming interface for
the <code>POST</code> processor</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-MHD_005fdestroy_005fresponse"><code>MHD_destroy_response</code></a></td><td
valign="top"><a href="#microhttpd_002dresponse-enqueue">8.1 Enqueuing a
response</a></td></tr>
-<tr><td></td><td valign="top"><a
href="#index-MHD_005fget_005fconnection_005finfo"><code>MHD_get_connection_info</code></a></td><td
valign="top"><a href="#microhttpd_002dinfo-conn">10.2 Obtaining state
information about a connection</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-MHD_005fdigest_005fauth_005fcheck"><code>MHD_digest_auth_check</code></a></td><td
valign="top"><a href="#microhttpd_002ddauth">9. Utilizing Digest
Authentication</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-MHD_005fdigest_005fauth_005fget_005fusername"><code>MHD_digest_auth_get_username</code></a></td><td
valign="top"><a href="#microhttpd_002ddauth">9. Utilizing Digest
Authentication</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-MHD_005fget_005fconnection_005finfo"><code>MHD_get_connection_info</code></a></td><td
valign="top"><a href="#microhttpd_002dinfo-conn">11.2 Obtaining state
information about a connection</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-MHD_005fget_005fconnection_005fvalues"><code>MHD_get_connection_values</code></a></td><td
valign="top"><a href="#microhttpd_002drequests">7. Handling
requests</a></td></tr>
-<tr><td></td><td valign="top"><a
href="#index-MHD_005fget_005fdaemon_005finfo"><code>MHD_get_daemon_info</code></a></td><td
valign="top"><a href="#microhttpd_002dinfo-daemon">10.1 Obtaining state
information about an MHD daemon</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-MHD_005fget_005fdaemon_005finfo"><code>MHD_get_daemon_info</code></a></td><td
valign="top"><a href="#microhttpd_002dinfo-daemon">11.1 Obtaining state
information about an MHD daemon</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-MHD_005fget_005ffdset"><code>MHD_get_fdset</code></a></td><td
valign="top"><a href="#microhttpd_002dinspect">6. Implementing external
<code>select</code></a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-MHD_005fget_005fresponse_005fheader"><code>MHD_get_response_header</code></a></td><td
valign="top"><a href="#microhttpd_002dresponse-inspect">8.4 Inspecting a
response object</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-MHD_005fget_005fresponse_005fheaders"><code>MHD_get_response_headers</code></a></td><td
valign="top"><a href="#microhttpd_002dresponse-inspect">8.4 Inspecting a
response object</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-MHD_005fget_005ftimeout"><code>MHD_get_timeout</code></a></td><td
valign="top"><a href="#microhttpd_002dinspect">6. Implementing external
<code>select</code></a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-MHD_005flookup_005fconnection_005fvalue"><code>MHD_lookup_connection_value</code></a></td><td
valign="top"><a href="#microhttpd_002drequests">7. Handling
requests</a></td></tr>
-<tr><td></td><td valign="top"><a
href="#index-MHD_005fpost_005fprocess"><code>MHD_post_process</code></a></td><td
valign="top"><a href="#microhttpd_002dpost-api">9.1 Programming interface for
the <code>POST</code> processor</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-MHD_005fpost_005fprocess"><code>MHD_post_process</code></a></td><td
valign="top"><a href="#microhttpd_002dpost-api">10.1 Programming interface for
the <code>POST</code> processor</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-MHD_005fqueue_005fauth_005ffail_005fresponse"><code>MHD_queue_auth_fail_response</code></a></td><td
valign="top"><a href="#microhttpd_002ddauth">9. Utilizing Digest
Authentication</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-MHD_005fqueue_005fresponse"><code>MHD_queue_response</code></a></td><td
valign="top"><a href="#microhttpd_002dresponse-enqueue">8.1 Enqueuing a
response</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-MHD_005frun"><code>MHD_run</code></a></td><td valign="top"><a
href="#microhttpd_002dinit">5. Starting and stopping the server</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-MHD_005fset_005fconnection_005fvalue"><code>MHD_set_connection_value</code></a></td><td
valign="top"><a href="#microhttpd_002drequests">7. Handling
requests</a></td></tr>
@@ -3717,7 +3977,8 @@
<ul class="toc">
<li><a name="toc-Introduction" href="#microhttpd_002dintro">1.
Introduction</a>
<ul class="toc">
- <li><a name="toc-SIGPIPE" href="#SIGPIPE">1.1 SIGPIPE</a></li>
+ <li><a name="toc-Including-the-microhttpd_002eh-header"
href="#Including-the-microhttpd_002eh-header">1.1 Including the microhttpd.h
header</a></li>
+ <li><a name="toc-SIGPIPE" href="#SIGPIPE">1.2 SIGPIPE</a></li>
</ul></li>
<li><a name="toc-Constants" href="#microhttpd_002dconst">2.
Constants</a></li>
<li><a name="toc-Structures-type-definition"
href="#microhttpd_002dstruct">3. Structures type definition</a></li>
@@ -3732,14 +3993,15 @@
<li><a name="toc-Adding-headers-to-a-response"
href="#microhttpd_002dresponse-headers">8.3 Adding headers to a
response</a></li>
<li><a name="toc-Inspecting-a-response-object"
href="#microhttpd_002dresponse-inspect">8.4 Inspecting a response
object</a></li>
</ul></li>
- <li><a name="toc-Adding-a-POST-processor" href="#microhttpd_002dpost">9.
Adding a <code>POST</code> processor</a>
+ <li><a name="toc-Utilizing-Digest-Authentication"
href="#microhttpd_002ddauth">9. Utilizing Digest Authentication</a></li>
+ <li><a name="toc-Adding-a-POST-processor" href="#microhttpd_002dpost">10.
Adding a <code>POST</code> processor</a>
<ul class="toc">
- <li><a name="toc-Programming-interface-for-the-POST-processor"
href="#microhttpd_002dpost-api">9.1 Programming interface for the
<code>POST</code> processor</a></li>
+ <li><a name="toc-Programming-interface-for-the-POST-processor"
href="#microhttpd_002dpost-api">10.1 Programming interface for the
<code>POST</code> processor</a></li>
</ul></li>
- <li><a name="toc-Obtaining-status-information_002e"
href="#microhttpd_002dinfo">10. Obtaining status information.</a>
+ <li><a name="toc-Obtaining-status-information_002e"
href="#microhttpd_002dinfo">11. Obtaining status information.</a>
<ul class="toc">
- <li><a name="toc-Obtaining-state-information-about-an-MHD-daemon"
href="#microhttpd_002dinfo-daemon">10.1 Obtaining state information about an
MHD daemon</a></li>
- <li><a name="toc-Obtaining-state-information-about-a-connection"
href="#microhttpd_002dinfo-conn">10.2 Obtaining state information about a
connection</a></li>
+ <li><a name="toc-Obtaining-state-information-about-an-MHD-daemon"
href="#microhttpd_002dinfo-daemon">11.1 Obtaining state information about an
MHD daemon</a></li>
+ <li><a name="toc-Obtaining-state-information-about-a-connection"
href="#microhttpd_002dinfo-conn">11.2 Obtaining state information about a
connection</a></li>
</ul></li>
<li><a name="toc-GNU_002dLGPL-1" href="#GNU_002dLGPL">GNU-LGPL</a></li>
<li><a name="toc-GNU-GPL-with-eCos-Extension-1"
href="#GNU-GPL-with-eCos-Extension">GNU GPL with eCos Extension</a>
@@ -3771,8 +4033,9 @@
<li><a name="stoc-Implementing-external-select"
href="#microhttpd_002dinspect">6. Implementing external
<code>select</code></a></li>
<li><a name="stoc-Handling-requests" href="#microhttpd_002drequests">7.
Handling requests</a></li>
<li><a name="stoc-Building-answers-to-responses"
href="#microhttpd_002dresponses">8. Building answers to responses</a></li>
-<li><a name="stoc-Adding-a-POST-processor" href="#microhttpd_002dpost">9.
Adding a <code>POST</code> processor</a></li>
-<li><a name="stoc-Obtaining-status-information_002e"
href="#microhttpd_002dinfo">10. Obtaining status information.</a></li>
+<li><a name="stoc-Utilizing-Digest-Authentication"
href="#microhttpd_002ddauth">9. Utilizing Digest Authentication</a></li>
+<li><a name="stoc-Adding-a-POST-processor" href="#microhttpd_002dpost">10.
Adding a <code>POST</code> processor</a></li>
+<li><a name="stoc-Obtaining-status-information_002e"
href="#microhttpd_002dinfo">11. Obtaining status information.</a></li>
<li><a name="stoc-GNU_002dLGPL-1" href="#GNU_002dLGPL">GNU-LGPL</a></li>
<li><a name="stoc-GNU-GPL-with-eCos-Extension-1"
href="#GNU-GPL-with-eCos-Extension">GNU GPL with eCos Extension</a></li>
<li><a name="stoc-GNU_002dFDL-1" href="#GNU_002dFDL">GNU-FDL</a></li>
@@ -3791,7 +4054,7 @@
</tr></table>
<h1>About This Document</h1>
<p>
- This document was generated by <em>Christian Grothoff</em> on <em>July 26,
2010</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html
1.82</em></a>.
+ This document was generated by <em>Christian Grothoff</em> on <em>September
10, 2010</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html
1.82</em></a>.
</p>
<p>
The buttons in the navigation panels have the following meaning:
@@ -3893,7 +4156,7 @@
<hr size="1">
<p>
<font size="-1">
- This document was generated by <em>Christian Grothoff</em> on <em>July 26,
2010</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html
1.82</em></a>.
+ This document was generated by <em>Christian Grothoff</em> on <em>September
10, 2010</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html
1.82</em></a>.
</font>
<br>
Modified: libmicrohttpd-docs/WWW/microhttpd.pdf
===================================================================
(Binary files differ)
Modified: libmicrohttpd-docs/WWW/tutorial.html
===================================================================
--- libmicrohttpd-docs/WWW/tutorial.html 2010-09-10 12:54:07 UTC (rev
12968)
+++ libmicrohttpd-docs/WWW/tutorial.html 2010-09-10 12:56:57 UTC (rev
12969)
@@ -14,7 +14,7 @@
Free Documentation License".
-->
-<!-- Created on July 26, 2010 by texi2html 1.82
+<!-- Created on September 10, 2010 by texi2html 1.82
texi2html was written by:
Lionel Cons <address@hidden> (original author)
Karl Berry <address@hidden>
@@ -3356,7 +3356,7 @@
</tr></table>
<h1>About This Document</h1>
<p>
- This document was generated by <em>Christian Grothoff</em> on <em>July 26,
2010</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html
1.82</em></a>.
+ This document was generated by <em>Christian Grothoff</em> on <em>September
10, 2010</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html
1.82</em></a>.
</p>
<p>
The buttons in the navigation panels have the following meaning:
@@ -3458,7 +3458,7 @@
<hr size="1">
<p>
<font size="-1">
- This document was generated by <em>Christian Grothoff</em> on <em>July 26,
2010</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html
1.82</em></a>.
+ This document was generated by <em>Christian Grothoff</em> on <em>September
10, 2010</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html
1.82</em></a>.
</font>
<br>
Modified: libmicrohttpd-docs/WWW/tutorial.pdf
===================================================================
(Binary files differ)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r12969 - libmicrohttpd-docs/WWW,
gnunet <=