gnunet-svn
[Top][All Lists]
Advanced

[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 &lsquo;<tt>microhttpd.h</tt>&rsquo;.
 </p>
 
@@ -92,8 +92,9 @@
 <tr><td align="left" valign="top"><a href="#microhttpd_002drequests">7. 
Handling requests</a></td><td>&nbsp;&nbsp;</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>&nbsp;&nbsp;</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>&nbsp;&nbsp;</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>&nbsp;&nbsp;</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>&nbsp;&nbsp;</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>&nbsp;&nbsp;</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>&nbsp;&nbsp;</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"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#SIGPIPE" title="Next section in 
reading order"> &gt; </a>]</td>
+<td valign="middle" align="left">[<a 
href="#Including-the-microhttpd_002eh-header" title="Next section in reading 
order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#Top" title="Beginning of this 
chapter or previous chapter"> &lt;&lt; </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"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SIGPIPE" title="Next section in 
reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#microhttpd_002dintro" 
title="Beginning of this chapter or previous chapter"> &lt;&lt; </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"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </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 &quot;microhttpd.h&quot; 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 &quot;microhttpd.h&quot;, you should also add a line
+with <code>#define MHD_PLATFORM_H</code> which will prevent the
+&quot;microhttpd.h&quot; 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 &quot;microhttpd.h&quot; 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"> &lt; </a>]</td>
+<tr><td valign="middle" align="left">[<a 
href="#Including-the-microhttpd_002eh-header" title="Previous section in 
reading order"> &lt; </a>]</td>
 <td valign="middle" align="left">[<a href="#microhttpd_002dconst" title="Next 
section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#microhttpd_002dintro" 
title="Beginning of this chapter or previous chapter"> &lt;&lt; </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 &ldquo;1&rdquo;, a browser may open a first connection to
+access your &ldquo;index.html&rdquo; 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 &mdash; 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 &ldquo;Connection: close&rdquo; 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>&nbsp;</td><td><pre class="example">MHD_add_response_header 
(response,
+                         MHD_HTTP_HEADER_CONNECTION,
+                         &quot;close&quot;);
+</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, &ldquo;NORMAL&rdquo; 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&rsquo;s seed.
+</p>
+<p>This option should be followed by two arguments.  First an integer of
+type &quot;size_t&quot; 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 &quot;unsigned int&quot; 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 &rsquo;void*&rsquo; which will
 be passed as the &quot;arg&quot; argument to &quot;fun&quot;.
 </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 &quot;&ndash;&ndash;disable-messages&quot; flag. 
-
+with the &quot;&ndash;disable-messages&quot; 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 &rsquo;struct MHD_OptionItem&rsquo;, 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 &quot;%HH&quot;.  This option should be followed by two arguments, the
+first one must be of the form
+</p>
+<table><tr><td>&nbsp;</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"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#microhttpd_002drequests" 
title="Beginning of this chapter or previous chapter"> &lt;&lt; </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"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#microhttpd_002ddauth" title="Next 
chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
@@ -1269,7 +1386,7 @@
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#microhttpd_002dresponses" 
title="Beginning of this chapter or previous chapter"> &lt;&lt; </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"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#microhttpd_002ddauth" title="Next 
chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
@@ -1362,7 +1479,7 @@
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#microhttpd_002dresponses" 
title="Beginning of this chapter or previous chapter"> &lt;&lt; </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"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#microhttpd_002ddauth" title="Next 
chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
@@ -1485,7 +1602,7 @@
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#microhttpd_002dresponses" 
title="Beginning of this chapter or previous chapter"> &lt;&lt; </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"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#microhttpd_002ddauth" title="Next 
chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </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"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#microhttpd_002dpost" title="Next 
section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#microhttpd_002ddauth" title="Next 
section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#microhttpd_002dresponses" 
title="Beginning of this chapter or previous chapter"> &lt;&lt; </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"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#microhttpd_002ddauth" title="Next 
chapter"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </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"> &lt; </a>]</td>
-<td valign="middle" align="left">[<a href="#microhttpd_002dpost-api" 
title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left">[<a href="#microhttpd_002dpost" title="Next 
section in reading order"> &gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left">[<a href="#microhttpd_002dresponses" 
title="Beginning of this chapter or previous chapter"> &lt;&lt; </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"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </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()&rsquo;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 &quot;stale=true&quot; 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>&nbsp;</td><td><pre class="example">#define PAGE 
&quot;&lt;html&gt;&lt;head&gt;&lt;title&gt;libmicrohttpd 
demo&lt;/title&gt;&lt;/head&gt;&lt;body&gt;Access 
granted&lt;/body&gt;&lt;/html&gt;&quot;
+#define DENIED &quot;&lt;html&gt;&lt;head&gt;&lt;title&gt;libmicrohttpd 
demo&lt;/title&gt;&lt;/head&gt;&lt;body&gt;Access 
denied&lt;/body&gt;&lt;/html&gt;&quot;
+#define OPAQUE &quot;11733b200778ce33060f31c9af70a870ba96ddd4&quot;
+
+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 = &quot;testpass&quot;;
+  const char *realm = &quot;address@hidden&quot;;
+  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"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#microhttpd_002dpost-api" 
title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#microhttpd_002ddauth" 
title="Beginning of this chapter or previous chapter"> &lt;&lt; </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"> &gt;&gt; </a>]</td>
 <td valign="middle" align="left"> &nbsp; </td>
 <td valign="middle" align="left"> &nbsp; </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>&nbsp;&nbsp;</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>&nbsp;&nbsp;</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>&nbsp;&nbsp;</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>&nbsp;&nbsp;</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>&nbsp;&nbsp;</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>&nbsp;&nbsp;</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 @@
  &nbsp; 
 <a href="#Concept-Index-1_cp_letter-Q" class="summary-letter"><b>Q</b></a>
  &nbsp; 
+<a href="#Concept-Index-1_cp_letter-R" class="summary-letter"><b>R</b></a>
+ &nbsp; 
 <a href="#Concept-Index-1_cp_letter-S" class="summary-letter"><b>S</b></a>
  &nbsp; 
 <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 @@
  &nbsp; 
 <a href="#Concept-Index-1_cp_letter-Q" class="summary-letter"><b>Q</b></a>
  &nbsp; 
+<a href="#Concept-Index-1_cp_letter-R" class="summary-letter"><b>R</b></a>
+ &nbsp; 
 <a href="#Concept-Index-1_cp_letter-S" class="summary-letter"><b>S</b></a>
  &nbsp; 
 <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)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]