ocaml http page
authorStefano Zacchiroli <zack@debian.org>
Wed, 26 Dec 2007 11:03:43 +0000 (12:03 +0100)
committerStefano Zacchiroli <zack@debian.org>
Wed, 26 Dec 2007 11:03:43 +0000 (12:03 +0100)
76 files changed:
hacking/software.mdwn
hacking/software/.ocaml-http.mdwn.swp [new file with mode: 0644]
hacking/software/ocaml-http.mdwn [new file with mode: 0644]
hacking/software/ocaml-http/changelog [new file with mode: 0644]
hacking/software/ocaml-http/examples/.cvsignore [new file with mode: 0644]
hacking/software/ocaml-http/examples/Makefile [new file with mode: 0644]
hacking/software/ocaml-http/examples/always_ok_daemon.ml [new file with mode: 0644]
hacking/software/ocaml-http/examples/basic_auth.ml [new file with mode: 0644]
hacking/software/ocaml-http/examples/chdir.ml [new file with mode: 0644]
hacking/software/ocaml-http/examples/client_address.ml [new file with mode: 0644]
hacking/software/ocaml-http/examples/damned_recursion.ml [new file with mode: 0644]
hacking/software/ocaml-http/examples/dump_args.ml [new file with mode: 0644]
hacking/software/ocaml-http/examples/highlander.ml [new file with mode: 0644]
hacking/software/ocaml-http/examples/oo_daemon.ml [new file with mode: 0644]
hacking/software/ocaml-http/examples/threads.ml [new file with mode: 0644]
hacking/software/ocaml-http/examples/timeout.ml [new file with mode: 0644]
hacking/software/ocaml-http/examples/webfsd.ml [new file with mode: 0644]
hacking/software/ocaml-http/html/.cvsignore [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_common.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_constants.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_daemon.Trivial.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_daemon.daemon.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_daemon.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_message.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_message.message.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_misc.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_parser.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_parser_sanity.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_request.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_request.request.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_response.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_response.response.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_tcp_server.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_threaded_tcp_server.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_types.connection.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_types.daemon.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_types.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_types.message.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_types.request.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_types.response.html [new file with mode: 0644]
hacking/software/ocaml-http/html/Http_user_agent.html [new file with mode: 0644]
hacking/software/ocaml-http/html/index.html [new file with mode: 0644]
hacking/software/ocaml-http/html/index_attributes.html [new file with mode: 0644]
hacking/software/ocaml-http/html/index_class_types.html [new file with mode: 0644]
hacking/software/ocaml-http/html/index_classes.html [new file with mode: 0644]
hacking/software/ocaml-http/html/index_exceptions.html [new file with mode: 0644]
hacking/software/ocaml-http/html/index_methods.html [new file with mode: 0644]
hacking/software/ocaml-http/html/index_module_types.html [new file with mode: 0644]
hacking/software/ocaml-http/html/index_modules.html [new file with mode: 0644]
hacking/software/ocaml-http/html/index_types.html [new file with mode: 0644]
hacking/software/ocaml-http/html/index_values.html [new file with mode: 0644]
hacking/software/ocaml-http/html/style.css [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_common.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_constants.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_daemon.Trivial.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_daemon.daemon.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_daemon.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_message.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_message.message.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_misc.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_parser.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_parser_sanity.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_request.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_request.request.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_response.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_response.response.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_tcp_server.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_threaded_tcp_server.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_types.connection.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_types.daemon.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_types.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_types.message.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_types.request.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_types.response.html [new file with mode: 0644]
hacking/software/ocaml-http/html/type_Http_user_agent.html [new file with mode: 0644]
hacking/software/ocaml-http/ocaml-http-0.1.3.tar.gz [new file with mode: 0644]

index a544a65..cae64f4 100644 (file)
@@ -53,7 +53,7 @@ package](http://packages.qa.debian.org/cduce)]
 # dormant software projects
 
 * **OCaml-HTTP** - [OCaml](http://caml.inria.fr) library for writing simple HTTP
-servers [[[homepage|ocaml-http]], [debian
+servers [ [[homepage|ocaml-http]], [debian
 package](http://packages.qa.debian.org/ocaml-http)]
 * ([components](http://helm.cs.unibo.it/software/) of) **HELM** - a digital
 library of formalized mathematics) [[homepage](http://helm.cs.unibo.it)]:
diff --git a/hacking/software/.ocaml-http.mdwn.swp b/hacking/software/.ocaml-http.mdwn.swp
new file mode 100644 (file)
index 0000000..369d1db
Binary files /dev/null and b/hacking/software/.ocaml-http.mdwn.swp differ
diff --git a/hacking/software/ocaml-http.mdwn b/hacking/software/ocaml-http.mdwn
new file mode 100644 (file)
index 0000000..7fb956c
--- /dev/null
@@ -0,0 +1,55 @@
+[[meta title="OCaml HTTP"]]
+## do it yourself (OCaml) HTTP daemon
+
+**OCaml HTTP** is an [OCaml](http://caml.inria.fr) library freely inspired from
+[Perl's HTTP::Daemon
+module](http://search.cpan.org/~gaas/libwww-perl-5.808/lib/HTTP/Daemon.pm) that
+permits you to write simple HTTP daemons in OCaml.
+
+The main API let you define a HTTP daemon *specification*, which contains, among
+other parameters, a **callback** function that is invoked each time a request is
+received. The callback function will be invoked with an instance of an object
+representing the received HTTP request and an `out_channel` connected to the
+remote HTTP client socket.
+
+Then you can start your HTTP daemon invoking the `main` function passing your
+specification. Each time a client connect to the TCP port bound by your daemon,
+OCaml HTTP will parse the request and instantiate the request object. If all
+goes well your callback will be invoked, otherwise appropriate error messages
+will be sent back to the client without disturbing your callback.
+
+You can use a lot of *facility* functions in your callback that permits you to
+send easily headers, error responses, file, or abstract HTTP response objects.
+Otherwise you can also choose the 'hard way' and send data directly to the
+`out_channel` (expecially useful for *sending data incrementally* to the
+client). You can also mix the two approaches.
+
+Daemon specifications are used also to specify other parameters governing daemon
+behaviour like: TCP *port and address* to bind, way of handling incoming
+requests (handle all of them in a *single process*, *fork* a new process or
+spawn a new *thread* for each incoming request), *timeout*, *authentication*
+requirements (username and password for HTTP basic authentication).
+
+OCaml HTTP contains also a tiny implementation of a **HTTP client** which can be
+used to retrieve resources via GET HTTP method and to *iter* on them (useful for
+huge resources which can't be kept in memory).
+
+* [[changelog]] for the latest version (0.1.3)
+* [[API|html/index.html]] documentation
+* some trivial [examples](examples/)
+
+OCaml HTTP is freely distributed under the GNU Library General Public License
+(GPL) and is available here for **download**:
+
+* tarball (sources) [[ocaml-http-0.1.3.tar.gz]]
+* official Debian packages are available: [[debpkg libhttp-ocaml-dev]]
+* browse the [Subversion
+repository](http://helm.cs.unibo.it/websvn/listing.php?repname=helm&path=/trunk/helm/software/DEVEL/ocaml-http/&rev=0&sc=0)
+
+To build OCaml HTTP from sources you will need:
+
+* [the ocaml compiler](http://caml.inria.fr)
+* [findlib](http://www.ocaml-programming.de/programming/findlib.html)
+* [ocamlnet](http://sourceforge.net/projects/ocamlnet)
+* [pcre-ocaml](http://www.ocaml.info/home/ocaml_sources.html)
+
diff --git a/hacking/software/ocaml-http/changelog b/hacking/software/ocaml-http/changelog
new file mode 100644 (file)
index 0000000..3617ed9
--- /dev/null
@@ -0,0 +1,184 @@
+ocaml-http (0.1.3-1) unstable; urgency=low
+
+  * force bash as SHELL in Makefile, since we rely on bashisms
+    (closes: bug#381915)
+  * removed Http_daemon.{start,start'}, they have been deprecated a while ago
+    in favour of Http_daemon.main
+  * added 'auto_close' to daemon specifications. When set to true (defaults to
+    false), makes ocaml-http close every connection with client just after
+    having executed a callback, no matter if that callback succeeds or fails
+    with an exception
+
+ -- Stefano Zacchiroli <zack@debian.org>  Sun, 20 Aug 2006 18:07:41 +0200
+
+ocaml-http (0.1.2-4) unstable; urgency=low
+
+  * Rebuilt against ocaml 3.09.2, bumped deps accordingly.
+  * debian/control
+    - Bumped Standards-Version to 3.7.2 (no changes needed)
+
+ -- Stefano Zacchiroli <zack@debian.org>  Wed, 17 May 2006 05:18:32 +0000
+
+ocaml-http (0.1.2-3) unstable; urgency=low
+
+  * Rebuilt against OCaml 3.09.1, bumped deps accordingly.
+
+ -- Stefano Zacchiroli <zack@debian.org>  Sun,  8 Jan 2006 13:13:07 +0100
+
+ocaml-http (0.1.2-2) unstable; urgency=low
+
+  * rebuilt with ocaml 3.09
+  * debian/*
+    - no more hardcoding of ocaml abi version anywhere
+  * debian/rules
+    - use cdbs
+
+ -- Stefano Zacchiroli <zack@debian.org>  Sat, 26 Nov 2005 20:28:26 +0100
+
+ocaml-http (0.1.2-1) unstable; urgency=low
+
+  * avoid exceptions for closing connection twice during finaliztion of
+    connection objects (thanks to Eric Strokes <eric.stokes@csun.edu>
+    for the patch)
+
+ -- Stefano Zacchiroli <zack@debian.org>  Wed, 14 Sep 2005 18:03:40 +0200
+
+ocaml-http (0.1.1-1) unstable; urgency=low
+
+  * added ?default parameter to "param" method
+  * fixed bug in response status line parsing
+  * integrated patch for HTTP/1.1 persistent connections from
+    Eric Cooper <ecc@cmu.edu>:
+    - added support for persistent connections to http_daemon.ml: server
+      now loops until End_of_file (or any exception) occurs when trying
+      to parse the next request
+  * debian/control
+    - bumped pcre and ocamlnet dependencies
+    - bumped standards-version to 3.6.2
+
+ -- Stefano Zacchiroli <zack@debian.org>  Wed, 16 Mar 2005 09:24:07 +0100
+
+ocaml-http (0.1.0-2) unstable; urgency=low
+
+  * rebuilt against ocaml 3.08.3
+
+ -- Stefano Zacchiroli <zack@debian.org>  Tue, 29 Mar 2005 11:39:24 +0200
+
+ocaml-http (0.1.0-1) unstable; urgency=low
+
+  * first debian official package
+
+ -- Stefano Zacchiroli <zack@debian.org>  Tue,  8 Feb 2005 22:45:54 +0100
+
+ocaml-http (0.1.0) unstable; urgency=low
+
+  * added "daemon specifications": a unified way of specifying daemons
+    behaviour including old parameters of Http_daemon.start together
+    with authentication requirements and exception handling
+  * added new way of building daemons starting from specifications, old
+    ways (e.g. Http_daemon.start) are now deprecated
+  * added sigpipe handling to avoid daemons dying for uncaught signals
+  * added exception handler (as part of a daemon specification), it can
+    be used to ensure that some code is execute before a process/thread
+    die for uncaught exception (e.g. unlocking a global mutex)
+  * added authentication requirements (as part of a daemon
+    specification): an handy way to specify required user name and
+    password for HTTP basic authentication
+  * added head_callback to Http_user_agent in order to have access to
+    response status and headers in HTTP requests
+  * changed license from GPL to LGPL
+  * improved ocamldoc documentation and debian packaging
+
+ -- Stefano Zacchiroli <zack@debian.org>  Thu,  3 Feb 2005 23:08:14 +0100
+
+ocaml-http (0.0.10) unstable; urgency=low
+
+  * renamed Http_client module to Http_user_agent to avoid compatibility
+    issues with Netclient. Renamed that module functions removing
+    "http_" prefix (e.g., summarizing, Http_client.http_get ->
+    Http_user_agent.get)
+  * ported to ocaml 3.08
+  * debian/control
+    - bumped standards version to 3.6.1.1
+    - changed deps to ocaml 3.08 and -nox
+
+ -- Stefano Zacchiroli <zack@debian.org>  Thu,  5 Aug 2004 15:06:49 +0200
+
+ocaml-http (0.0.9) unstable; urgency=low
+
+  * Added support for HTTP Basic authentication
+  * Restyled Http_daemon API so that correct invocations of them are
+    statically typechecked
+  * Added support for HEAD requests to Http_client
+  * ~addr parameter now support not only ip addresses but also hostnames
+  * debian/control
+    - bumped Standards-Version to 3.6.1.0
+  * debian/rules
+    - moved debhelper compatibility level to debian/compat
+
+ -- Stefano Zacchiroli <zack@debian.org>  Tue, 16 Dec 2003 18:01:41 +0100
+
+ocaml-http (0.0.8) unstable; urgency=low
+
+  * Added support for "ancient" HTTP requests which specify no HTTP
+    version
+    - 'version' method on message now has type 'version option'
+  * Http_daemon now use debugging prints from Http_common like other
+    modules
+  * Added debugging print of requests parse error
+  * Shutdown server socket on abnormal exit (actually: uncaught
+    exceptions or SIGTERM received)
+  * Added a lot of ocamldoc documentation
+  * Added minimal HTTP 1.0/1.1 client support
+
+ -- Stefano Zacchiroli <zack@debian.org>  Fri, 10 Jan 2003 10:36:53 +0100
+
+ocaml-http (0.0.7) unstable; urgency=low
+
+  * Added support for POST requests
+  * Implemented a commont 'message' class from which 'request' and
+    'response' inherit
+  * Changed constructor of 'request' objects, requests are now buildable
+    directly (and only) from an input channel
+  * Added client IP address information to Http_request.request class
+  * Added OO daemon interfaces ("daemon" and "connection" classes)
+  * Use Pcre to perform sanity test on headers instead of home made
+    parsing
+  * Callback functions can raise Http_types.Quit to have main daemon
+    quit
+  * Case-insensitive handling of header names
+
+ -- Stefano Zacchiroli <zack@debian.org>  Wed, 25 Dec 2002 16:22:31 +0100
+
+ocaml-http (0.0.6) unstable; urgency=low
+
+  * Ship multithreaded and non multithreaded cm{x,}aS
+  * Added support for multiple binding of the same parameter in request
+    objects (new method 'paramAll')
+  * Added support for 'empty' bindings in query arguments (e.g.
+    "/foo?b=" or "/foo?b")
+  * Added some sanity checks
+  * Bumped Standards-Version to 3.5.8
+  * Use versioned dependencies lib{pcre,ocamlnet}-ocaml-dev-<version>
+  * Added 'Provides libhttp-ocaml-dev-<version>'
+  * Removed GPL from debian/copyright, added reference to
+    /usr/share/common-licenses/GPL
+
+ -- Stefano Zacchiroli <zack@debian.org>  Mon, 25 Nov 2002 11:04:49 +0100
+
+ocaml-http (0.0.5) unstable; urgency=low
+
+  * Fixed bug for HTTP encoded GET parameters which contain '?' or '&'
+    characters
+  * Added support for chdir in a given document root before starting
+  * Added support for multi threaded daemons
+  * Added a generic 'Http_daemon.respond' function
+  * Added 'toString' method to response objects
+
+ -- Stefano Zacchiroli <zack@debian.org>  Fri, 22 Nov 2002 11:29:37 +0100
+
+ocaml-http (0.0.3) unstable; urgency=low
+
+  * First release.
+
+ -- Stefano Zacchiroli <zack@debian.org>  Sun, 17 Nov 2002 17:41:41 +0100
diff --git a/hacking/software/ocaml-http/examples/.cvsignore b/hacking/software/ocaml-http/examples/.cvsignore
new file mode 100644 (file)
index 0000000..cf7440d
--- /dev/null
@@ -0,0 +1,18 @@
+*.cmi
+*.cmo
+*.cmx
+*.cma
+*.cmxa
+always_ok_daemon
+basic_auth
+chdir
+client_address
+damned_recursion
+dont_fork
+dump_args
+highlander
+obj_foo
+oo_daemon
+threads
+timeout
+webfsd
diff --git a/hacking/software/ocaml-http/examples/Makefile b/hacking/software/ocaml-http/examples/Makefile
new file mode 100644 (file)
index 0000000..9209563
--- /dev/null
@@ -0,0 +1,41 @@
+include ../Makefile.defs
+OBJS_NON_MT = ../http.cma
+OBJS_NON_MT_OPT = ../http.cmxa
+OBJS_MT = ../http_mt.cma
+OBJS_MT_OPT = ../http_mt.cmxa
+EXAMPLES_FLAGS = -I .. -linkpkg
+
+EXAMPLES :=    \
+       always_ok_daemon.ml     \
+       basic_auth.ml           \
+       chdir.ml                \
+       client_address.ml       \
+       damned_recursion.ml     \
+       dump_args.ml            \
+       highlander.ml           \
+       oo_daemon.ml            \
+       threads.ml              \
+       timeout.ml              \
+       webfsd.ml
+EXAMPLES := $(patsubst %.ml,%,$(EXAMPLES))
+
+all: $(EXAMPLES)
+opt: $(patsubst %,%.opt,$(EXAMPLES))
+%: %.ml $(OBJS_NON_MT)
+       $(OCAMLC) $(EXAMPLES_FLAGS) $(OBJS_NON_MT) -o $@ $<
+%.opt: %.ml $(OBJS_NON_MT_OPT)
+       $(OCAMLOPT) $(EXAMPLES_FLAGS) $(OBJS_NON_MT_OPT) -o $@ $<
+
+threads: threads.ml $(OBJS_MT)
+       $(OCAMLC) $(EXAMPLES_FLAGS) $(OBJS_MT) $(THREADS_FLAGS) -o $@ $<
+threads.opt: threads.ml $(OBJS_MT_OPT)
+       $(OCAMLOPT) $(EXAMPLES_FLAGS) $(OBJS_MT_OPT) $(THREADS_FLAGS) -o $@ $<
+
+damned_recursion: damned_recursion.ml $(OBJS_MT)
+       $(OCAMLC) $(EXAMPLES_FLAGS) $(OBJS_MT) $(THREADS_FLAGS) -o $@ $<
+damned_recursion.opt: damned_recursion.ml $(OBJS_MT_OPT)
+       $(OCAMLOPT) $(EXAMPLES_FLAGS) $(OBJS_MT_OPT) $(THREADS_FLAGS) -o $@ $<
+
+distclean: clean
+clean:
+       -rm -f *.cm[ioax] *.o $(EXAMPLES) $(patsubst %,%.opt,$(EXAMPLES))
diff --git a/hacking/software/ocaml-http/examples/always_ok_daemon.ml b/hacking/software/ocaml-http/examples/always_ok_daemon.ml
new file mode 100644 (file)
index 0000000..caa0d45
--- /dev/null
@@ -0,0 +1,33 @@
+
+(*
+  OCaml HTTP - do it yourself (fully OCaml) HTTP daemon
+
+  Copyright (C) <2002-2004> Stefano Zacchiroli <zack@cs.unibo.it>
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*)
+
+open Http_types
+
+  (* start an http daemon that alway respond with a 200 status code and an empty
+  content *)
+let spec =
+  { Http_daemon.default_spec with
+      callback = (fun _ outchan -> Http_daemon.respond outchan);
+      port = 9999;
+  }
+
+let _ = Http_daemon.main spec
+
diff --git a/hacking/software/ocaml-http/examples/basic_auth.ml b/hacking/software/ocaml-http/examples/basic_auth.ml
new file mode 100644 (file)
index 0000000..bdfb2b9
--- /dev/null
@@ -0,0 +1,50 @@
+
+(*
+  OCaml HTTP - do it yourself (fully OCaml) HTTP daemon
+
+  Copyright (C) <2002-2004> Stefano Zacchiroli <zack@cs.unibo.it>
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*)
+
+open Http_types
+
+(* the easy way: specify authentication requirements within a daemon_spec *)
+let spec =
+  { Http_daemon.default_spec with
+        (* requires basic authentication, username "foo", password "bar" *)
+      auth = Some ("my realm", `Basic ("foo", "bar"));
+      callback = (fun _ outchan -> Http_daemon.respond ~body:"secret" outchan);
+      port = 9999;
+  }
+
+(*
+(* the hard^Wother way: manual handling of authorization *)
+let callback req outchan =
+  match req#authorization with
+  | Some (`Basic (username, password))
+    when username = "foo" && password = "bar" ->
+      Http_daemon.respond ~code:(`Code 200) ~body:"secret" outchan
+  | _ -> raise (Unauthorized "my secret site")
+
+let spec =
+  { Http_daemon.default_spec with
+      callback = callback;
+      port = 9999;
+  }
+*)
+
+let _ = Http_daemon.main spec
+
diff --git a/hacking/software/ocaml-http/examples/chdir.ml b/hacking/software/ocaml-http/examples/chdir.ml
new file mode 100644 (file)
index 0000000..bcba1eb
--- /dev/null
@@ -0,0 +1,34 @@
+
+(*
+  OCaml HTTP - do it yourself (fully OCaml) HTTP daemon
+
+  Copyright (C) <2002-2004> Stefano Zacchiroli <zack@cs.unibo.it>
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*)
+
+open Printf
+open Http_types
+
+let spec =
+  { Http_daemon.default_spec with
+      callback = (fun _ outchan ->
+        Http_daemon.respond ~body:(sprintf "%s\n" (Sys.getcwd ())) outchan);
+      port = 9999;
+      root_dir = Some "/etc";
+  }
+
+let _ = Http_daemon.main spec
+
diff --git a/hacking/software/ocaml-http/examples/client_address.ml b/hacking/software/ocaml-http/examples/client_address.ml
new file mode 100644 (file)
index 0000000..79d4ff8
--- /dev/null
@@ -0,0 +1,42 @@
+
+(*
+  OCaml HTTP - do it yourself (fully OCaml) HTTP daemon
+
+  Copyright (C) <2002-2004> Stefano Zacchiroli <zack@cs.unibo.it>
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*)
+
+open Printf
+open Http_types
+
+let callback req outchan =
+  let body =
+    sprintf
+      "Hi, this is your personal assistant, you are connected from %s:%d\n"
+      req#clientAddr
+      req#clientPort
+  in
+  let res = new Http_response.response ~body () in
+  Http_daemon.respond_with res outchan
+
+let spec =
+  { Http_daemon.default_spec with
+      callback = callback;
+      port = 9999
+  }
+
+let _ = Http_daemon.main spec
+
diff --git a/hacking/software/ocaml-http/examples/damned_recursion.ml b/hacking/software/ocaml-http/examples/damned_recursion.ml
new file mode 100644 (file)
index 0000000..be2e306
--- /dev/null
@@ -0,0 +1,51 @@
+
+(*
+  OCaml HTTP - do it yourself (fully OCaml) HTTP daemon
+
+  Copyright (C) <2002-2004> Stefano Zacchiroli <zack@cs.unibo.it>
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*)
+
+open Printf
+open Http_types
+
+let port = 9999
+
+let callback (req: Http_types.request) outchan =
+  let i = int_of_string (req#param "x") in
+  let body =
+    match i with
+    | 0 -> "0"
+    | x when x > 0 ->
+       let data =
+          Http_user_agent.get (sprintf "http://127.0.0.1:%d/foo?x=%d"
+                                port (x - 1))
+       in
+       sprintf "%s %d" data x
+    | _ -> assert false
+  in
+  Http_daemon.respond ~code:(`Code 200) ~body outchan;
+  close_out outchan  (* Http_user_agent relies on EOF, not Content-Length *)
+
+let spec =
+  { Http_daemon.default_spec with
+      callback = callback;
+      port = port;
+      mode = `Thread;
+  }
+
+let _ = Http_daemon.main spec
+
diff --git a/hacking/software/ocaml-http/examples/dump_args.ml b/hacking/software/ocaml-http/examples/dump_args.ml
new file mode 100644 (file)
index 0000000..ab08211
--- /dev/null
@@ -0,0 +1,48 @@
+
+(*
+  OCaml HTTP - do it yourself (fully OCaml) HTTP daemon
+
+  Copyright (C) <2002-2004> Stefano Zacchiroli <zack@cs.unibo.it>
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*)
+
+open Printf
+open Http_types
+
+let callback req outchan =
+  let str = 
+    (sprintf "request path = %s\n"  req#path) ^
+    (sprintf "request GET params = %s\n"
+      (String.concat ";"
+        (List.map (fun (h,v) -> String.concat "=" [h;v]) req#params_GET))) ^
+    (sprintf "request POST params = %s\n"
+      (String.concat ";"
+        (List.map (fun (h,v) -> String.concat "=" [h;v]) req#params_POST))) ^
+    (sprintf "request ALL params = %s\n"
+      (String.concat ";"
+        (List.map (fun (h,v) -> String.concat "=" [h;v]) req#params))) ^
+    (sprintf "request BODY = '%s'\n\n" req#body)
+  in
+  Http_daemon.respond ~code:(`Code 200) ~body: str outchan
+
+let spec =
+  { Http_daemon.default_spec with
+      callback = callback;
+      port = 9999;
+  }
+
+let _ = Http_daemon.main spec
+
diff --git a/hacking/software/ocaml-http/examples/highlander.ml b/hacking/software/ocaml-http/examples/highlander.ml
new file mode 100644 (file)
index 0000000..d424454
--- /dev/null
@@ -0,0 +1,41 @@
+
+(*
+  OCaml HTTP - do it yourself (fully OCaml) HTTP daemon
+
+  Copyright (C) <2002-2004> Stefano Zacchiroli <zack@cs.unibo.it>
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*)
+
+(* test for fast rebinding of the tcp port *)
+
+open Printf
+open Http_types
+
+let spec =
+  { Http_daemon.default_spec with
+      callback = (fun _ outchan -> Http_daemon.respond ~body:"foo" outchan);
+      port = 9999;
+      mode = `Single;
+  }
+
+let _ =
+  Sys.catch_break true;
+  while true do
+    try
+      Http_daemon.main spec;
+    with Sys.Break -> prerr_endline "RESURRECTION!!!!"
+  done
+
diff --git a/hacking/software/ocaml-http/examples/oo_daemon.ml b/hacking/software/ocaml-http/examples/oo_daemon.ml
new file mode 100644 (file)
index 0000000..91197e3
--- /dev/null
@@ -0,0 +1,47 @@
+
+(*
+  OCaml HTTP - do it yourself (fully OCaml) HTTP daemon
+
+  Copyright (C) <2002-2004> Stefano Zacchiroli <zack@cs.unibo.it>
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*)
+
+open Http_daemon
+open Http_response
+
+  (* the simple way *)
+let d = new daemon ~addr:"127.0.0.1" ~port:9999 ()
+
+let _ =
+  while true do
+    let (req, conn) = d#getRequest in (* wait for valid request *)
+    conn#respond_with (new response ~body:"foo\n" ());
+    conn#close
+  done
+
+(*
+  (* the hard^Wother way *)
+let d = new daemon ~addr:"127.0.0.1" ~port:9999 () in
+let _ =
+  while true do
+    let conn = d#accept in (* wait for client connection *)
+    (match conn#getRequest with
+    | None -> ()  (* invalid request received *)
+    | Some req -> conn#respond_with (new response ~body:"foo\n" ()));
+    conn#close (* close socket *)
+  done
+*)
+
diff --git a/hacking/software/ocaml-http/examples/threads.ml b/hacking/software/ocaml-http/examples/threads.ml
new file mode 100644 (file)
index 0000000..01f6dae
--- /dev/null
@@ -0,0 +1,63 @@
+
+(*
+  OCaml HTTP - do it yourself (fully OCaml) HTTP daemon
+
+  Copyright (C) <2002-2004> Stefano Zacchiroli <zack@cs.unibo.it>
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*)
+
+open Http_types
+
+let m = Mutex.create ()
+let m_locked = ref true
+
+let critical f =
+  Mutex.lock m;
+    m_locked := true;
+    Lazy.force f;
+    m_locked := false;
+  Mutex.unlock m
+
+  (** ocaml's Thread.unlock suspend the invoking process if the mutex is already
+  * unlocked, therefore we unlock it only if we know that it's currently locked
+  *)
+let safe_unlock _ _ = if !m_locked then Mutex.unlock m
+
+let i = ref 10
+let dump_i outchan =
+  Http_daemon.respond ~body:(Printf.sprintf "i = %d\n" !i) outchan
+
+let callback req outchan =
+  match req#path with
+  | "/incr" -> critical (lazy (incr i; dump_i outchan; Unix.sleep 5))
+  | "/decr" -> critical (lazy (decr i; dump_i outchan; Unix.sleep 5))
+  | "/get"  -> critical (lazy (dump_i outchan))
+  | bad_request -> Http_daemon.respond_error outchan
+
+let spec =
+  { Http_daemon.default_spec with
+      port = 9999;
+      mode = `Thread;
+      callback = callback;
+      exn_handler = Some safe_unlock;
+        (** ocaml-http's default exn_handler is Pervasives.ignore. This means
+        * that threads holding the "m" mutex above may die without unlocking it.
+        * Using safe_unlock as an exception handler we ensure that "m" mutex is
+        * unlocked in case of exceptions (e.g. SIGPIPE) *)
+  }
+
+let _ = Http_daemon.main spec
+
diff --git a/hacking/software/ocaml-http/examples/timeout.ml b/hacking/software/ocaml-http/examples/timeout.ml
new file mode 100644 (file)
index 0000000..d39f6be
--- /dev/null
@@ -0,0 +1,31 @@
+
+(*
+  OCaml HTTP - do it yourself (fully OCaml) HTTP daemon
+
+  Copyright (C) <2002-2004> Stefano Zacchiroli <zack@cs.unibo.it>
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*)
+
+open Http_types
+
+let spec =
+  { Http_daemon.default_spec with
+      callback = (fun _ outchan -> Http_daemon.respond ~body:"foo" outchan);
+      timeout = Some 10;
+  }
+
+let _ = Http_daemon.main spec
+
diff --git a/hacking/software/ocaml-http/examples/webfsd.ml b/hacking/software/ocaml-http/examples/webfsd.ml
new file mode 100644 (file)
index 0000000..c7a984b
--- /dev/null
@@ -0,0 +1,50 @@
+
+(*
+  OCaml HTTP - do it yourself (fully OCaml) HTTP daemon
+
+  Copyright (C) <2002-2004> Stefano Zacchiroli <zack@cs.unibo.it>
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*)
+
+open Http_types
+
+let def_port = 80
+let def_addr = "0.0.0.0"
+let def_root = Sys.getcwd ()
+
+let port = ref def_port
+let addr = ref def_addr
+let root = ref def_root
+let argspec =
+  [ "-p", Arg.Int (fun p -> port := p),
+      "TCP port on which listen, default: " ^ string_of_int !port;
+    "-a", Arg.String (fun a -> addr := a),
+      "IP address on which listen, default: " ^ !addr;
+    "-r", Arg.String (fun r -> root := r),
+      "DocumentRoot, default: current working directory";
+  ]
+
+let _ =
+  Arg.parse argspec (fun _ -> ()) "";
+  let spec =
+    { Http_daemon.default_spec with
+        address = !addr;
+        port = !port;
+        root_dir = Some !root
+    }
+  in
+  Http_daemon.Trivial.main spec
+
diff --git a/hacking/software/ocaml-http/html/.cvsignore b/hacking/software/ocaml-http/html/.cvsignore
new file mode 100644 (file)
index 0000000..d0098b4
--- /dev/null
@@ -0,0 +1,2 @@
+*.css
+*.html
diff --git a/hacking/software/ocaml-http/html/Http_common.html b/hacking/software/ocaml-http/html/Http_common.html
new file mode 100644 (file)
index 0000000..11110eb
--- /dev/null
@@ -0,0 +1,92 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="next" href="Http_constants.html">
+<link rel="Up" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_common</title>
+</head>
+<body>
+<div class="navbar">&nbsp;<a href="index.html">Up</a>
+&nbsp;<a href="Http_constants.html">Next</a>
+</div>
+<center><h1>Module <a href="type_Http_common.html">Http_common</a></h1></center>
+<br>
+<pre><span class="keyword">module</span> Http_common: <code class="code">sig</code> <a href="Http_common.html">..</a> <code class="code">end</code></pre>Common functionalities shared by other OCaml HTTP modules<br>
+<hr width="100%">
+<pre><span class="keyword">val</span> <a name="VALdebug"></a>debug : <code class="type">bool Pervasives.ref</code></pre><div class="info">
+whether debugging messages are enabled or not, can be changed at runtime<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALdebug_print"></a>debug_print : <code class="type">string -> unit</code></pre><div class="info">
+print a string on stderr only if debugging is enabled<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALhttp_version"></a>http_version : <code class="type"><a href="Http_types.html#TYPEversion">Http_types.version</a></code></pre><div class="info">
+see <a href="Http_constants.html#VALversion"><code class="code">Http_constants.version</code></a><br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALserver_string"></a>server_string : <code class="type">string</code></pre><div class="info">
+see <a href="Http_constants.html#VALserver_string"><code class="code">Http_constants.server_string</code></a><br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALstring_of_version"></a>string_of_version : <code class="type"><a href="Http_types.html#TYPEversion">Http_types.version</a> -> string</code></pre><div class="info">
+pretty print an HTTP version<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALversion_of_string"></a>version_of_string : <code class="type">string -> <a href="Http_types.html#TYPEversion">Http_types.version</a></code></pre><div class="info">
+parse an HTTP version from a string<br>
+<b>Raises</b> <code>Invalid_HTTP_version</code> if given string doesn't represent a supported HTTP
+  version<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALstring_of_method"></a>string_of_method : <code class="type"><a href="Http_types.html#TYPEmeth">Http_types.meth</a> -> string</code></pre><div class="info">
+pretty print an HTTP method<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALmethod_of_string"></a>method_of_string : <code class="type">string -> <a href="Http_types.html#TYPEmeth">Http_types.meth</a></code></pre><div class="info">
+parse an HTTP method from a string<br>
+<b>Raises</b> <code>Invalid_HTTP_method</code> if given string doesn't represent a supported
+  method<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALstatus_of_code"></a>status_of_code : <code class="type">int -> <a href="Http_types.html#TYPEstatus">Http_types.status</a></code></pre><div class="info">
+converts an integer HTTP status to the corresponding status value<br>
+<b>Raises</b> <code>Invalid_code</code> if given integer isn't a valid HTTP status code<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALcode_of_status"></a>code_of_status : <code class="type">[< <a href="Http_types.html#TYPEstatus">Http_types.status</a> ] -> int</code></pre><div class="info">
+converts an HTTP status to the corresponding integer value<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALis_informational"></a>is_informational : <code class="type">int -> bool</code></pre><div class="info">
+<b>Returns</b> true on "informational" status codes, false elsewhere<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALis_success"></a>is_success : <code class="type">int -> bool</code></pre><div class="info">
+<b>Returns</b> true on "success" status codes, false elsewhere<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALis_redirection"></a>is_redirection : <code class="type">int -> bool</code></pre><div class="info">
+<b>Returns</b> true on "redirection" status codes, false elsewhere<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALis_client_error"></a>is_client_error : <code class="type">int -> bool</code></pre><div class="info">
+<b>Returns</b> true on "client error" status codes, false elsewhere<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALis_server_error"></a>is_server_error : <code class="type">int -> bool</code></pre><div class="info">
+<b>Returns</b> true on "server error" status codes, false elsewhere<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALis_error"></a>is_error : <code class="type">int -> bool</code></pre><div class="info">
+<b>Returns</b> true on "client error" and "server error" status code, false
+  elsewhere<br>
+</div>
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_constants.html b/hacking/software/ocaml-http/html/Http_constants.html
new file mode 100644 (file)
index 0000000..4f9a4ef
--- /dev/null
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="previous" href="Http_common.html">
+<link rel="next" href="Http_daemon.html">
+<link rel="Up" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><link title="daemon default values" rel="Section" href="#2_daemondefaultvalues">
+<title>Http_constants</title>
+</head>
+<body>
+<div class="navbar"><a href="Http_common.html">Previous</a>
+&nbsp;<a href="index.html">Up</a>
+&nbsp;<a href="Http_daemon.html">Next</a>
+</div>
+<center><h1>Module <a href="type_Http_constants.html">Http_constants</a></h1></center>
+<br>
+<pre><span class="keyword">module</span> Http_constants: <code class="code">sig</code> <a href="Http_constants.html">..</a> <code class="code">end</code></pre>Constants<br>
+<hr width="100%">
+<pre><span class="keyword">val</span> <a name="VALversion"></a>version : <code class="type"><a href="Http_types.html#TYPEversion">Http_types.version</a></code></pre><div class="info">
+default HTTP version<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALserver_string"></a>server_string : <code class="type">string</code></pre><div class="info">
+string returned as value of "Server:" response header<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALcrlf"></a>crlf : <code class="type">string</code></pre><div class="info">
+"\r\n" string<br>
+</div>
+<br>
+<a name="2_daemondefaultvalues"></a>
+<h2>daemon default values</h2><br>
+<pre><span class="keyword">val</span> <a name="VALdefault_addr"></a>default_addr : <code class="type">string</code></pre><pre><span class="keyword">val</span> <a name="VALdefault_auth"></a>default_auth : <code class="type">(string * <a href="Http_types.html#TYPEauth_info">Http_types.auth_info</a>) option</code></pre><pre><span class="keyword">val</span> <a name="VALdefault_auto_close"></a>default_auto_close : <code class="type">bool</code></pre><pre><span class="keyword">val</span> <a name="VALdefault_callback"></a>default_callback : <code class="type"><a href="Http_types.request.html">Http_types.request</a> -> Pervasives.out_channel -> unit</code></pre><pre><span class="keyword">val</span> <a name="VALdefault_mode"></a>default_mode : <code class="type"><a href="Http_types.html#TYPEdaemon_mode">Http_types.daemon_mode</a></code></pre><pre><span class="keyword">val</span> <a name="VALdefault_port"></a>default_port : <code class="type">int</code></pre><pre><span class="keyword">val</span> <a name="VALdefault_root_dir"></a>default_root_dir : <code class="type">string option</code></pre><pre><span class="keyword">val</span> <a name="VALdefault_exn_handler"></a>default_exn_handler : <code class="type">(exn -> Pervasives.out_channel -> unit) option</code></pre><pre><span class="keyword">val</span> <a name="VALdefault_timeout"></a>default_timeout : <code class="type">int option</code></pre></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_daemon.Trivial.html b/hacking/software/ocaml-http/html/Http_daemon.Trivial.html
new file mode 100644 (file)
index 0000000..b139226
--- /dev/null
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="Up" href="Http_daemon.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_daemon.Trivial</title>
+</head>
+<body>
+<div class="navbar">&nbsp;<a href="Http_daemon.html">Up</a>
+&nbsp;</div>
+<center><h1>Module <a href="type_Http_daemon.Trivial.html">Http_daemon.Trivial</a></h1></center>
+<br>
+<pre><span class="keyword">module</span> Trivial: <code class="code">sig</code> <a href="Http_daemon.Trivial.html">..</a> <code class="code">end</code></pre>Trivial static pages HTTP daemon.
+ Daemons created using this module will serve directory indexes and files
+ found starting from the working directory<br>
+<hr width="100%">
+<pre><span class="keyword">val</span> <a name="VALcallback"></a>callback : <code class="type"><a href="Http_types.request.html">Http_types.request</a> -> Pervasives.out_channel -> unit</code></pre><div class="info">
+callback function, exposed if you like to use it as a basis to define
+      a more powerful daemon<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALmain"></a>main : <code class="type"><a href="Http_types.html#TYPEdaemon_spec">Http_types.daemon_spec</a> -> unit</code></pre><div class="info">
+start the "trivial" HTTP daemon
+<br>
+</div>
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_daemon.daemon.html b/hacking/software/ocaml-http/html/Http_daemon.daemon.html
new file mode 100644 (file)
index 0000000..6168f30
--- /dev/null
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="Up" href="Http_daemon.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_daemon.daemon</title>
+</head>
+<body>
+<div class="navbar">&nbsp;<a href="Http_daemon.html">Up</a>
+&nbsp;</div>
+<center><h1>Class <a href="type_Http_daemon.daemon.html">Http_daemon.daemon</a></h1></center>
+<br>
+<pre><span class="keyword">class</span> <a name="TYPEdaemon"></a>daemon : <code class="type">?addr:string -> ?port:int -> unit -> </code><code class="type"><a href="Http_types.daemon.html">Http_types.daemon</a></code></pre>Object oriented interface to HTTP daemons.
+<br>
+<div class="param_info"><code class="code">addr</code> : address on which daemon will listen for connections</div>
+<div class="param_info"><code class="code">port</code> : port which daemon will bind
+ see <a href="Http_types.daemon.html"><code class="code">Http_types.daemon</code></a></div>
+<hr width="100%">
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_daemon.html b/hacking/software/ocaml-http/html/Http_daemon.html
new file mode 100644 (file)
index 0000000..27b5441
--- /dev/null
@@ -0,0 +1,130 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="previous" href="Http_constants.html">
+<link rel="next" href="Http_message.html">
+<link rel="Up" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_daemon</title>
+</head>
+<body>
+<div class="navbar"><a href="Http_constants.html">Previous</a>
+&nbsp;<a href="index.html">Up</a>
+&nbsp;<a href="Http_message.html">Next</a>
+</div>
+<center><h1>Module <a href="type_Http_daemon.html">Http_daemon</a></h1></center>
+<br>
+<pre><span class="keyword">module</span> Http_daemon: <code class="code">sig</code> <a href="Http_daemon.html">..</a> <code class="code">end</code></pre>Main OCaml HTTP module.
+    Here you can find two set of functions:<ul>
+<li>functions which let you start an HTTP Daemon (start* functions)</li>
+<li>facility functions which let you sent responses back to clients</li>
+</ul>
+<br>
+<hr width="100%">
+<pre><span class="keyword">val</span> <a name="VALsend_CRLF"></a>send_CRLF : <code class="type">Pervasives.out_channel -> unit</code></pre><div class="info">
+send a CRLF sequence on the given output channel, this is mandatory after
+  the last header was sent and before start sending the response body<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALsend_status_line"></a>send_status_line : <code class="type">?version:<a href="Http_types.html#TYPEversion">Http_types.version</a> -><br>       code:<a href="Http_types.html#TYPEstatus_code">Http_types.status_code</a> -> Pervasives.out_channel -> unit</code></pre><div class="info">
+send response status line, version is the http version used in response,
+  either code or status must be given (not both, not none) which represent the
+  HTTP response code, outchan is the output channel to which send status line<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALsend_basic_headers"></a>send_basic_headers : <code class="type">?version:<a href="Http_types.html#TYPEversion">Http_types.version</a> -><br>       code:<a href="Http_types.html#TYPEstatus_code">Http_types.status_code</a> -> Pervasives.out_channel -> unit</code></pre><div class="info">
+like send_status_line but additionally will also send "Date" and "Server"
+  standard headers<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALsend_header"></a>send_header : <code class="type">header:string -> value:string -> Pervasives.out_channel -> unit</code></pre><div class="info">
+send an HTTP header on outchan<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALsend_headers"></a>send_headers : <code class="type">headers:(string * string) list -> Pervasives.out_channel -> unit</code></pre><div class="info">
+as send_header, but for a list of pairs &lt;header, value&gt;<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALsend_file"></a>send_file : <code class="type">src:<a href="Http_types.html#TYPEfile_source">Http_types.file_source</a> -> Pervasives.out_channel -> unit</code></pre><div class="info">
+send a file through an out_channel<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALrespond"></a>respond : <code class="type">?body:string -><br>       ?headers:(string * string) list -><br>       ?version:<a href="Http_types.html#TYPEversion">Http_types.version</a> -><br>       ?code:<a href="Http_types.html#TYPEstatus_code">Http_types.status_code</a> -> Pervasives.out_channel -> unit</code></pre><div class="info">
+high level response function, respond on outchan sending: basic headers
+  (including Content-Length computed using 'body' argument), headers probided
+  via 'headers' argument, body given via 'body' argument.  Default response
+  status is 200, default response HTTP version is Http_common.http_version<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALrespond_not_found"></a>respond_not_found : <code class="type">url:string -> ?version:<a href="Http_types.html#TYPEversion">Http_types.version</a> -> Pervasives.out_channel -> unit</code></pre><div class="info">
+send a 404 (not found) HTTP response<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALrespond_forbidden"></a>respond_forbidden : <code class="type">url:string -> ?version:<a href="Http_types.html#TYPEversion">Http_types.version</a> -> Pervasives.out_channel -> unit</code></pre><div class="info">
+send a 403 (forbidden) HTTP response<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALrespond_redirect"></a>respond_redirect : <code class="type">location:string -><br>       ?body:string -><br>       ?version:<a href="Http_types.html#TYPEversion">Http_types.version</a> -><br>       ?code:<a href="Http_types.html#TYPEstatus_code">Http_types.status_code</a> -> Pervasives.out_channel -> unit</code></pre><div class="info">
+send a "redirection" class response, optional body argument contains data
+  that will be displayed in the body of the response, default response status is
+  301 (moved permanently), only redirection status are accepted by this
+  function, other values will raise Failure<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALrespond_unauthorized"></a>respond_unauthorized : <code class="type">?version:<a href="Http_types.html#TYPEversion">Http_types.version</a> -><br>       ?realm:string -> Pervasives.out_channel -> unit</code></pre><div class="info">
+respond with a 401 (Unauthorized) response asking for authentication
+ against given realm (default is the server name)<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALrespond_error"></a>respond_error : <code class="type">?body:string -><br>       ?version:<a href="Http_types.html#TYPEversion">Http_types.version</a> -><br>       ?code:<a href="Http_types.html#TYPEstatus_code">Http_types.status_code</a> -> Pervasives.out_channel -> unit</code></pre><div class="info">
+send an "error" response (i.e. 400 &lt;= status &lt; 600), optional body
+  argument as per send_redirect, default response status is 400 (bad request),
+  only error status are accepted by this function, other values will
+  raise Failure<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALrespond_file"></a>respond_file : <code class="type">fname:string -> ?version:<a href="Http_types.html#TYPEversion">Http_types.version</a> -> Pervasives.out_channel -> unit</code></pre><div class="info">
+tipical static pages http daemon behaviour, if requested url is a file,
+  return it, it it is a directory return a directory listing of it<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALrespond_with"></a>respond_with : <code class="type"><a href="Http_types.response.html">Http_types.response</a> -> Pervasives.out_channel -> unit</code></pre><div class="info">
+respond using a prebuilt Http_types.response object<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALmain"></a>main : <code class="type"><a href="Http_types.html#TYPEdaemon_spec">Http_types.daemon_spec</a> -> unit</code></pre><div class="info">
+start an HTTP daemon
+<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALdefault_spec"></a>default_spec : <code class="type"><a href="Http_types.html#TYPEdaemon_spec">Http_types.daemon_spec</a></code></pre><div class="info">
+default daemon specification:<ul>
+<li>listen on 0.0.0.0, port 80</li>
+<li>"always ok" callback  (return an empty response, response code 200)</li>
+<li>fork a child for each request</li>
+<li>do not change to a root directory (i.e. keep cwd)</li>
+<li>300 seconds timeout</li>
+<li>ignores exceptions</li>
+<li>no authentication required</li>
+<li>do not automatically close client connections after callback</li>
+</ul>
+<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALdaemon_spec"></a>daemon_spec : <code class="type">?address:string -><br>       ?auth:(string * <a href="Http_types.html#TYPEauth_info">Http_types.auth_info</a>) option -><br>       ?auto_close:bool -><br>       ?callback:(<a href="Http_types.request.html">Http_types.request</a> -> Pervasives.out_channel -> unit) -><br>       ?mode:<a href="Http_types.html#TYPEdaemon_mode">Http_types.daemon_mode</a> -><br>       ?port:int -><br>       ?root_dir:string option -><br>       ?exn_handler:(exn -> Pervasives.out_channel -> unit) option -><br>       ?timeout:int option -> unit -> <a href="Http_types.html#TYPEdaemon_spec">Http_types.daemon_spec</a></code></pre><div class="info">
+currified daemon_spec constructor. Each parameter of this function
+ corresponds to one field of Http_types.daemon_spec and defaults to the
+ corresponding field of Http_daemon.default_spec<br>
+</div>
+<pre><span class="keyword">class</span> <a name="TYPEdaemon"></a><a href="Http_daemon.daemon.html">daemon</a> : <code class="type">?addr:string -> ?port:int -> unit -> </code><code class="type"><a href="Http_types.daemon.html">Http_types.daemon</a></code></pre><div class="info">
+Object oriented interface to HTTP daemons.
+</div>
+<pre><span class="keyword">module</span> <a href="Http_daemon.Trivial.html">Trivial</a>: <code class="code">sig</code> <a href="Http_daemon.Trivial.html">..</a> <code class="code">end</code></pre><div class="info">
+Trivial static pages HTTP daemon.
+</div>
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_message.html b/hacking/software/ocaml-http/html/Http_message.html
new file mode 100644 (file)
index 0000000..c4621b4
--- /dev/null
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="previous" href="Http_daemon.html">
+<link rel="next" href="Http_misc.html">
+<link rel="Up" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_message</title>
+</head>
+<body>
+<div class="navbar"><a href="Http_daemon.html">Previous</a>
+&nbsp;<a href="index.html">Up</a>
+&nbsp;<a href="Http_misc.html">Next</a>
+</div>
+<center><h1>Module <a href="type_Http_message.html">Http_message</a></h1></center>
+<br>
+<pre><span class="keyword">module</span> Http_message: <code class="code">sig</code> <a href="Http_message.html">..</a> <code class="code">end</code></pre>Object Oriented representation of HTTP messages<br>
+<hr width="100%">
+<pre><span class="keyword">class</span> <a name="TYPEmessage"></a><span class="keyword">virtual</span> <a href="Http_message.message.html">message</a> : <code class="type">body:string -> headers:(string * string) list -> version:<a href="Http_types.html#TYPEversion">Http_types.version</a> option -> clisockaddr:Unix.sockaddr -> srvsockaddr:Unix.sockaddr -> </code><code class="code">object</code> <a href="Http_message.message.html">..</a> <code class="code">end</code></pre><div class="info">
+OO representation of an HTTP message
+</div>
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_message.message.html b/hacking/software/ocaml-http/html/Http_message.message.html
new file mode 100644 (file)
index 0000000..1cde2b6
--- /dev/null
@@ -0,0 +1,127 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="Up" href="Http_message.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_message.message</title>
+</head>
+<body>
+<div class="navbar">&nbsp;<a href="Http_message.html">Up</a>
+&nbsp;</div>
+<center><h1>Class virtual <a href="type_Http_message.message.html">Http_message.message</a></h1></center>
+<br>
+<pre><span class="keyword">class</span> <a name="TYPEmessage"></a><span class="keyword">virtual</span> message : <code class="type">body:string -> headers:(string * string) list -> version:<a href="Http_types.html#TYPEversion">Http_types.version</a> option -> clisockaddr:Unix.sockaddr -> srvsockaddr:Unix.sockaddr -> </code><code class="code">object</code> <a href="Http_message.message.html">..</a> <code class="code">end</code></pre>OO representation of an HTTP message<br>
+<div class="param_info"><code class="code">headers</code> : message headers shipped with the message</div>
+<hr width="100%">
+<pre><span class="keyword">method</span> <a name="METHODversion"></a>version : <code class="type"><a href="Http_types.html#TYPEversion">Http_types.version</a> option</code></pre><div class="info">
+<b>Returns</b> message HTTP version, it can be None because older version
+        of the HTTP protocol don't require HTTP version to be told between
+        message source and destination<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODsetVersion"></a>setVersion : <code class="type"><a href="Http_types.html#TYPEversion">Http_types.version</a> -> unit</code></pre><div class="info">
+set message HTTP version<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODbody"></a>body : <code class="type">string</code></pre><div class="info">
+<b>Returns</b> message body<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODsetBody"></a>setBody : <code class="type">string -> unit</code></pre><div class="info">
+set message body<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODbodyBuf"></a>bodyBuf : <code class="type">Buffer.t</code></pre><div class="info">
+<b>Returns</b> a Buffer.t connected to message body (Warning: changing this
+        buffer will change message body too)<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODsetBodyBuf"></a>setBodyBuf : <code class="type">Buffer.t -> unit</code></pre><div class="info">
+set a new Buffer.t used to keep message body<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODaddBody"></a>addBody : <code class="type">string -> unit</code></pre><div class="info">
+append a string to message body<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODaddBodyBuf"></a>addBodyBuf : <code class="type">Buffer.t -> unit</code></pre><div class="info">
+append a whole buffer to message body<br>
+</div>
+<i>header name comparison are performed in a case-insensitive manner
+      as required by RFC2616, actually the implementation works converting all
+      header names in lowercase</i><pre><span class="keyword">method</span> <a name="METHODaddHeader"></a>addHeader : <code class="type">name:string -> value:string -> unit</code></pre><div class="info">
+add an HTTP header<br>
+</div>
+<div class="param_info"><code class="code">name</code> : header's name</div>
+<div class="param_info"><code class="code">value</code> : header's value</div>
+<pre><span class="keyword">method</span> <a name="METHODaddHeaders"></a>addHeaders : <code class="type">(string * string) list -> unit</code></pre><div class="info">
+add a list of HTTP headers<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODreplaceHeader"></a>replaceHeader : <code class="type">name:string -> value:string -> unit</code></pre><div class="info">
+like addHeader but replace previous definition of the same header<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODreplaceHeaders"></a>replaceHeaders : <code class="type">(string * string) list -> unit</code></pre><div class="info">
+like addHeaders but replace previous definition of headers that were
+        already defined<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODremoveHeader"></a>removeHeader : <code class="type">name:string -> unit</code></pre><div class="info">
+remove _all_ occurences of an HTTP header from the message<br>
+</div>
+<div class="param_info"><code class="code">name</code> : name of the header to be removed</div>
+<pre><span class="keyword">method</span> <a name="METHODhasHeader"></a>hasHeader : <code class="type">name:string -> bool</code></pre><div class="info">
+<b>Returns</b> true if given header exists in message, false otherwise<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODheader"></a>header : <code class="type">name:string -> string</code></pre><div class="info">
+<b>Raises</b> <code>Header_not_found</code> if given header wasn't defined in message<br>
+<b>Returns</b> value associated to a given header<br>
+</div>
+<div class="param_info"><code class="code">name</code> : name of the header to lookup</div>
+<pre><span class="keyword">method</span> <a name="METHODheaders"></a>headers : <code class="type">(string * string) list</code></pre><div class="info">
+<b>Returns</b> the full set of headers defined for this message, the value
+        returned is an association list from headers name to headers value, an
+        header may occurs more that once in the list<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODclientSockaddr"></a>clientSockaddr : <code class="type">Unix.sockaddr</code></pre><div class="info">
+<b>Returns</b> client Unix.sockaddr<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODclientAddr"></a>clientAddr : <code class="type">string</code></pre><div class="info">
+<b>Returns</b> client address pretty printed<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODclientPort"></a>clientPort : <code class="type">int</code></pre><div class="info">
+<b>Returns</b> client port<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODserverSockaddr"></a>serverSockaddr : <code class="type">Unix.sockaddr</code></pre><div class="info">
+<b>Returns</b> server Unix.sockaddr<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODserverAddr"></a>serverAddr : <code class="type">string</code></pre><div class="info">
+<b>Returns</b> server address pretty printed<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODserverPort"></a>serverPort : <code class="type">int</code></pre><div class="info">
+<b>Returns</b> server port<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODfstLineToString"></a><span class="keyword">private</span> <span class="keyword">virtual</span> fstLineToString : <code class="type">string</code></pre><div class="info">
+<b>Returns</b> for requests first request line, for responses first
+        response line.
+        User by derived requests and responses to implement toString method<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODtoString"></a>toString : <code class="type">string</code></pre><div class="info">
+<b>Returns</b> a string representation of the message<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODserialize"></a>serialize : <code class="type">Pervasives.out_channel -> unit</code></pre><div class="info">
+serialize the message over an output channel<br>
+</div>
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_misc.html b/hacking/software/ocaml-http/html/Http_misc.html
new file mode 100644 (file)
index 0000000..08684b0
--- /dev/null
@@ -0,0 +1,111 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="previous" href="Http_message.html">
+<link rel="next" href="Http_parser.html">
+<link rel="Up" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_misc</title>
+</head>
+<body>
+<div class="navbar"><a href="Http_message.html">Previous</a>
+&nbsp;<a href="index.html">Up</a>
+&nbsp;<a href="Http_parser.html">Next</a>
+</div>
+<center><h1>Module <a href="type_Http_misc.html">Http_misc</a></h1></center>
+<br>
+<pre><span class="keyword">module</span> Http_misc: <code class="code">sig</code> <a href="Http_misc.html">..</a> <code class="code">end</code></pre>Helpers and other not better classified functions which should not be
+exposed in the final API<br>
+<hr width="100%">
+<pre><span class="keyword">val</span> <a name="VALdate_822"></a>date_822 : <code class="type">unit -> string</code></pre><div class="info">
+<b>Returns</b> the current date compliant to RFC 1123, which updates RFC 822
+  zone info are retrieved from UTC<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALis_directory"></a>is_directory : <code class="type">string -> bool</code></pre><div class="info">
+<b>Returns</b> true if 'name' is a directory on the file system, false otherwise<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALfilesize"></a>filesize : <code class="type">string -> int</code></pre><div class="info">
+<b>Returns</b> the filesize of fname<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALstrip_trailing_slash"></a>strip_trailing_slash : <code class="type">string -> string</code></pre><div class="info">
+strip trailing '/', if any, from a string and<br>
+<b>Returns</b> the new string<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALstrip_heading_slash"></a>strip_heading_slash : <code class="type">string -> string</code></pre><div class="info">
+strip heading '/', if any, from a string and<br>
+<b>Returns</b> the new string<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALls"></a>ls : <code class="type">Unix.dir_handle -> string list</code></pre><div class="info">
+given a dir handle<br>
+<b>Returns</b> a list of entries contained<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALstring_explode"></a>string_explode : <code class="type">string -> char list</code></pre><div class="info">
+explode a string in a char list<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALstring_implode"></a>string_implode : <code class="type">char list -> string</code></pre><div class="info">
+implode a char list in a string<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALreason_phrase_of_code"></a>reason_phrase_of_code : <code class="type">int -> string</code></pre><div class="info">
+given an HTTP response code return the corresponding reason phrase<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALbuild_sockaddr"></a>build_sockaddr : <code class="type">string * int -> Unix.sockaddr</code></pre><div class="info">
+build a Unix.sockaddr inet address from a string representation of an IP
+  address and a port number<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALexplode_sockaddr"></a>explode_sockaddr : <code class="type">Unix.sockaddr -> string * int</code></pre><div class="info">
+explode an _inet_ Unix.sockaddr address in a string representation of an
+  IP address and a port number<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALpeername_of_out_channel"></a>peername_of_out_channel : <code class="type">Pervasives.out_channel -> Unix.sockaddr</code></pre><div class="info">
+given an out_channel build on top of a socket, return peername related to
+  that socket<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALpeername_of_in_channel"></a>peername_of_in_channel : <code class="type">Pervasives.in_channel -> Unix.sockaddr</code></pre><div class="info">
+as above but works on in_channels<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALsockname_of_out_channel"></a>sockname_of_out_channel : <code class="type">Pervasives.out_channel -> Unix.sockaddr</code></pre><div class="info">
+given an out_channel build on top of a socket, return sockname related to
+  that socket<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALsockname_of_in_channel"></a>sockname_of_in_channel : <code class="type">Pervasives.in_channel -> Unix.sockaddr</code></pre><div class="info">
+as above but works on in_channels<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALbuf_of_inchan"></a>buf_of_inchan : <code class="type">?limit:int -> Pervasives.in_channel -> Buffer.t</code></pre><div class="info">
+reads from an input channel till it End_of_file and returns what has been
+  read; if limit is given returned buffer will contains at most first 'limit'
+  bytes read from input channel<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALlist_assoc_all"></a>list_assoc_all : <code class="type">'a -> ('a * 'b) list -> 'b list</code></pre><div class="info">
+like List.assoc but return all bindings of a given key instead of the
+  leftmost one only<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALwarn"></a>warn : <code class="type">string -> unit</code></pre><div class="info">
+print a warning msg to stderr. Adds trailing \n<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALerror"></a>error : <code class="type">string -> unit</code></pre><div class="info">
+print an error msg to stderr. Adds trailing \n<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALfinally"></a>finally : <code class="type">(unit -> unit) -> ('a -> 'b) -> 'a -> 'b</code></pre><div class="info">
+</div>
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_parser.html b/hacking/software/ocaml-http/html/Http_parser.html
new file mode 100644 (file)
index 0000000..f9473be
--- /dev/null
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="previous" href="Http_misc.html">
+<link rel="next" href="Http_parser_sanity.html">
+<link rel="Up" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_parser</title>
+</head>
+<body>
+<div class="navbar"><a href="Http_misc.html">Previous</a>
+&nbsp;<a href="index.html">Up</a>
+&nbsp;<a href="Http_parser_sanity.html">Next</a>
+</div>
+<center><h1>Module <a href="type_Http_parser.html">Http_parser</a></h1></center>
+<br>
+<pre><span class="keyword">module</span> Http_parser: <code class="code">sig</code> <a href="Http_parser.html">..</a> <code class="code">end</code></pre>HTTP messages parsing<br>
+<hr width="100%">
+<pre><span class="keyword">val</span> <a name="VALsplit_query_params"></a>split_query_params : <code class="type">string -> (string * string) list</code></pre><div class="info">
+given an HTTP like query string (e.g. "name1=value1&amp;name2=value2&amp;...")<br>
+<b>Raises</b><ul><li><code>Malformed_query</code> if the string isn't a valid query string</li>
+<li><code>Malformed_query_part</code> if some piece of the query isn't valid</li>
+</ul>
+<b>Returns</b> a list of pairs <code class="code">("name1", "value1"); ("name2", "value2")</code><br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALparse_request_fst_line"></a>parse_request_fst_line : <code class="type">Pervasives.in_channel -><br>       <a href="Http_types.html#TYPEmeth">Http_types.meth</a> * Neturl.url * <a href="Http_types.html#TYPEversion">Http_types.version</a> option</code></pre><div class="info">
+parse 1st line of an HTTP request<br>
+<b>Raises</b><ul><li><code>Malformed_request</code> if request 1st linst isn't well formed</li>
+<li><code>Malformed_request_URI</code> if requested URI isn't well formed</li>
+</ul>
+<b>Returns</b> a triple meth * url * version, meth is the HTTP method invoked, url is
+  the requested url, version is the HTTP version specified or None if no version
+  was specified<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALparse_response_fst_line"></a>parse_response_fst_line : <code class="type">Pervasives.in_channel -> <a href="Http_types.html#TYPEversion">Http_types.version</a> * <a href="Http_types.html#TYPEstatus">Http_types.status</a></code></pre><div class="info">
+parse 1st line of an HTTP response
+<br>
+<b>Raises</b> <code>Malformed_response</code> if first line isn't well formed<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALparse_query_get_params"></a>parse_query_get_params : <code class="type">Neturl.url -> (string * string) list</code></pre><div class="info">
+parse HTTP GET parameters from an URL; paramater which were passed with no
+  value (like 'x' in "/foo.cgi?a=10&amp;x=&amp;c=9") are returned associated with the
+  empty ("") string.<br>
+<b>Returns</b> a list of pairs param_name * param_value<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALparse_path"></a>parse_path : <code class="type">Neturl.url -> string</code></pre><div class="info">
+parse the base path (removing query string, fragment, ....) from an URL<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALparse_headers"></a>parse_headers : <code class="type">Pervasives.in_channel -> (string * string) list</code></pre><div class="info">
+parse HTTP headers. Consumes also trailing CRLF at the end of header list<br>
+<b>Raises</b> <code>Invalid_header</code> if a not well formed header is encountered<br>
+<b>Returns</b> a list of pairs header_name * header_value<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALparse_request"></a>parse_request : <code class="type">Pervasives.in_channel -> string * (string * string) list</code></pre><div class="info">
+given an input channel, reads from it a GET HTTP request and<br>
+<b>Returns</b> a pair &lt;path, query_params&gt; where path is a string representing the
+  requested path and query_params is a list of pairs &lt;name, value&gt; (the GET
+  parameters)<br>
+</div>
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_parser_sanity.html b/hacking/software/ocaml-http/html/Http_parser_sanity.html
new file mode 100644 (file)
index 0000000..26536e3
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="previous" href="Http_parser.html">
+<link rel="next" href="Http_request.html">
+<link rel="Up" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_parser_sanity</title>
+</head>
+<body>
+<div class="navbar"><a href="Http_parser.html">Previous</a>
+&nbsp;<a href="index.html">Up</a>
+&nbsp;<a href="Http_request.html">Next</a>
+</div>
+<center><h1>Module <a href="type_Http_parser_sanity.html">Http_parser_sanity</a></h1></center>
+<br>
+<pre><span class="keyword">module</span> Http_parser_sanity: <code class="code">sig</code> <a href="Http_parser_sanity.html">..</a> <code class="code">end</code></pre>Sanity test functions related to HTTP message parsing<br>
+<hr width="100%">
+<pre><span class="keyword">val</span> <a name="VALheal_header_name"></a>heal_header_name : <code class="type">string -> unit</code></pre><div class="info">
+<b>Raises</b> <code>Invalid_header_name</code> if name isn't a valid HTTP header name<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALheal_header_value"></a>heal_header_value : <code class="type">string -> unit</code></pre><div class="info">
+<b>Raises</b> <code>Invalid_header_value</code> if value isn't a valid HTTP header value<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALheal_header"></a>heal_header : <code class="type">string * string -> unit</code></pre><div class="info">
+<b>Raises</b><ul><li><code>Invalid_header_name</code> if name isn't a valid HTTP header name</li>
+<li><code>Invalid_header_value</code> if value isn't a valid HTTP header value</li>
+</ul>
+</div>
+<pre><span class="keyword">val</span> <a name="VALnormalize_header_value"></a>normalize_header_value : <code class="type">string -> string</code></pre><div class="info">
+remove heading and/or trailing LWS sequences as per RFC2616<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALurl_of_string"></a>url_of_string : <code class="type">string -> Neturl.url</code></pre><div class="info">
+parse an URL from a string.<br>
+<b>Raises</b> <code>Malformed_URL</code> if an invalid URL is encountered<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALstring_of_url"></a>string_of_url : <code class="type">Neturl.url -> string</code></pre><div class="info">
+pretty print an URL<br>
+</div>
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_request.html b/hacking/software/ocaml-http/html/Http_request.html
new file mode 100644 (file)
index 0000000..843a965
--- /dev/null
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="previous" href="Http_parser_sanity.html">
+<link rel="next" href="Http_response.html">
+<link rel="Up" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_request</title>
+</head>
+<body>
+<div class="navbar"><a href="Http_parser_sanity.html">Previous</a>
+&nbsp;<a href="index.html">Up</a>
+&nbsp;<a href="Http_response.html">Next</a>
+</div>
+<center><h1>Module <a href="type_Http_request.html">Http_request</a></h1></center>
+<br>
+<pre><span class="keyword">module</span> Http_request: <code class="code">sig</code> <a href="Http_request.html">..</a> <code class="code">end</code></pre>Object Oriented representation of HTTP requests<br>
+<hr width="100%">
+<pre><span class="keyword">class</span> <a name="TYPErequest"></a><a href="Http_request.request.html">request</a> : <code class="type">Pervasives.in_channel -> </code><code class="type"><a href="Http_types.request.html">Http_types.request</a></code></pre><div class="info">
+OO representation of an HTTP request
+</div>
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_request.request.html b/hacking/software/ocaml-http/html/Http_request.request.html
new file mode 100644 (file)
index 0000000..3dbfca6
--- /dev/null
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="Up" href="Http_request.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_request.request</title>
+</head>
+<body>
+<div class="navbar">&nbsp;<a href="Http_request.html">Up</a>
+&nbsp;</div>
+<center><h1>Class <a href="type_Http_request.request.html">Http_request.request</a></h1></center>
+<br>
+<pre><span class="keyword">class</span> <a name="TYPErequest"></a>request : <code class="type">Pervasives.in_channel -> </code><code class="type"><a href="Http_types.request.html">Http_types.request</a></code></pre>OO representation of an HTTP request<br>
+<hr width="100%">
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_response.html b/hacking/software/ocaml-http/html/Http_response.html
new file mode 100644 (file)
index 0000000..92fa000
--- /dev/null
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="previous" href="Http_request.html">
+<link rel="next" href="Http_tcp_server.html">
+<link rel="Up" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_response</title>
+</head>
+<body>
+<div class="navbar"><a href="Http_request.html">Previous</a>
+&nbsp;<a href="index.html">Up</a>
+&nbsp;<a href="Http_tcp_server.html">Next</a>
+</div>
+<center><h1>Module <a href="type_Http_response.html">Http_response</a></h1></center>
+<br>
+<pre><span class="keyword">module</span> Http_response: <code class="code">sig</code> <a href="Http_response.html">..</a> <code class="code">end</code></pre>Object Oriented representation of HTTP responses<br>
+<hr width="100%">
+<pre><span class="keyword">class</span> <a name="TYPEresponse"></a><a href="Http_response.response.html">response</a> : <code class="type">?body:string -> ?headers:(string * string) list -> ?version:<a href="Http_types.html#TYPEversion">Http_types.version</a> -> ?clisockaddr:Unix.sockaddr -> ?srvsockaddr:Unix.sockaddr -> ?code:int -> ?status:<a href="Http_types.html#TYPEstatus">Http_types.status</a> -> unit -> </code><code class="type"><a href="Http_types.response.html">Http_types.response</a></code></pre><div class="info">
+OO representation of an HTTP response.
+</div>
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_response.response.html b/hacking/software/ocaml-http/html/Http_response.response.html
new file mode 100644 (file)
index 0000000..a07c189
--- /dev/null
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="Up" href="Http_response.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_response.response</title>
+</head>
+<body>
+<div class="navbar">&nbsp;<a href="Http_response.html">Up</a>
+&nbsp;</div>
+<center><h1>Class <a href="type_Http_response.response.html">Http_response.response</a></h1></center>
+<br>
+<pre><span class="keyword">class</span> <a name="TYPEresponse"></a>response : <code class="type">?body:string -> ?headers:(string * string) list -> ?version:<a href="Http_types.html#TYPEversion">Http_types.version</a> -> ?clisockaddr:Unix.sockaddr -> ?srvsockaddr:Unix.sockaddr -> ?code:int -> ?status:<a href="Http_types.html#TYPEstatus">Http_types.status</a> -> unit -> </code><code class="type"><a href="Http_types.response.html">Http_types.response</a></code></pre>OO representation of an HTTP response.<br>
+<hr width="100%">
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_tcp_server.html b/hacking/software/ocaml-http/html/Http_tcp_server.html
new file mode 100644 (file)
index 0000000..cf48d21
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="previous" href="Http_response.html">
+<link rel="next" href="Http_threaded_tcp_server.html">
+<link rel="Up" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><link title="servers" rel="Section" href="#2_servers">
+<link title="low level functions" rel="Section" href="#2_lowlevelfunctions">
+<title>Http_tcp_server</title>
+</head>
+<body>
+<div class="navbar"><a href="Http_response.html">Previous</a>
+&nbsp;<a href="index.html">Up</a>
+&nbsp;<a href="Http_threaded_tcp_server.html">Next</a>
+</div>
+<center><h1>Module <a href="type_Http_tcp_server.html">Http_tcp_server</a></h1></center>
+<br>
+<pre><span class="keyword">module</span> Http_tcp_server: <code class="code">sig</code> <a href="Http_tcp_server.html">..</a> <code class="code">end</code></pre>TCP servers used as low-levels for HTTP daemons<br>
+<hr width="100%">
+<br>
+<a name="2_servers"></a>
+<h2>servers</h2><br>
+<pre><span class="keyword">val</span> <a name="VALsimple"></a>simple : <code class="type"><a href="Http_types.html#TYPEtcp_server">Http_types.tcp_server</a></code></pre><div class="info">
+single process server<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALthread"></a>thread : <code class="type"><a href="Http_types.html#TYPEtcp_server">Http_types.tcp_server</a></code></pre><div class="info">
+multi threaded server<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALfork"></a>fork : <code class="type"><a href="Http_types.html#TYPEtcp_server">Http_types.tcp_server</a></code></pre><div class="info">
+multi process server<br>
+</div>
+<br>
+<a name="2_lowlevelfunctions"></a>
+<h2>low level functions</h2><br>
+<pre><span class="keyword">val</span> <a name="VALinit_socket"></a>init_socket : <code class="type">Unix.sockaddr -> Unix.file_descr</code></pre><div class="info">
+initialize a passive socket listening on given Unix.sockaddr<br>
+</div>
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_threaded_tcp_server.html b/hacking/software/ocaml-http/html/Http_threaded_tcp_server.html
new file mode 100644 (file)
index 0000000..5ecf841
--- /dev/null
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="previous" href="Http_tcp_server.html">
+<link rel="next" href="Http_types.html">
+<link rel="Up" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_threaded_tcp_server</title>
+</head>
+<body>
+<div class="navbar"><a href="Http_tcp_server.html">Previous</a>
+&nbsp;<a href="index.html">Up</a>
+&nbsp;<a href="Http_types.html">Next</a>
+</div>
+<center><h1>Module <a href="type_Http_threaded_tcp_server.html">Http_threaded_tcp_server</a></h1></center>
+<br>
+<pre><span class="keyword">module</span> Http_threaded_tcp_server: <code class="code">sig</code> <a href="Http_threaded_tcp_server.html">..</a> <code class="code">end</code></pre>Multithreaded part of Http_tcp_server<br>
+<hr width="100%">
+<pre><span class="keyword">val</span> <a name="VALserve"></a>serve : <code class="type">('a -> 'b) -> 'a -> unit</code></pre><div class="info">
+serve an HTTP request for a multi threaded TCP server<br>
+</div>
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_types.connection.html b/hacking/software/ocaml-http/html/Http_types.connection.html
new file mode 100644 (file)
index 0000000..2a9f56b
--- /dev/null
@@ -0,0 +1,51 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="previous" href="Http_types.response.html">
+<link rel="next" href="Http_types.daemon.html">
+<link rel="Up" href="Http_types.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_types.connection</title>
+</head>
+<body>
+<div class="navbar"><a href="Http_types.response.html">Previous</a>
+&nbsp;<a href="Http_types.html">Up</a>
+&nbsp;<a href="Http_types.daemon.html">Next</a>
+</div>
+<center><h1>Class type <a href="type_Http_types.connection.html">Http_types.connection</a></h1></center>
+<br>
+<pre><span class="keyword">class type</span> <a name="TYPEconnection"></a>connection = <code class="code">object</code> <a href="Http_types.connection.html">..</a> <code class="code">end</code></pre>an HTTP connection from a client to a server<br>
+<hr width="100%">
+<pre><span class="keyword">method</span> <a name="METHODgetRequest"></a>getRequest : <code class="type"><a href="Http_types.request.html">request</a> option</code></pre><div class="info">
+<b>Returns</b> next request object, may block if client hasn't submitted any
+      request yet, may be None if client request was ill-formed<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODrespond_with"></a>respond_with : <code class="type"><a href="Http_types.response.html">response</a> -> unit</code></pre><div class="info">
+respond to client sending it a response<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODclose"></a>close : <code class="type">unit</code></pre><div class="info">
+close connection to client. Warning: this object can't be used any
+      longer after this method has been called<br>
+</div>
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_types.daemon.html b/hacking/software/ocaml-http/html/Http_types.daemon.html
new file mode 100644 (file)
index 0000000..e485567
--- /dev/null
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="previous" href="Http_types.connection.html">
+<link rel="Up" href="Http_types.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_types.daemon</title>
+</head>
+<body>
+<div class="navbar"><a href="Http_types.connection.html">Previous</a>
+&nbsp;<a href="Http_types.html">Up</a>
+&nbsp;</div>
+<center><h1>Class type <a href="type_Http_types.daemon.html">Http_types.daemon</a></h1></center>
+<br>
+<pre><span class="keyword">class type</span> <a name="TYPEdaemon"></a>daemon = <code class="code">object</code> <a href="Http_types.daemon.html">..</a> <code class="code">end</code></pre>an HTTP daemon<br>
+<hr width="100%">
+<pre><span class="keyword">method</span> <a name="METHODaccept"></a>accept : <code class="type"><a href="Http_types.connection.html">connection</a></code></pre><div class="info">
+<b>Returns</b> a connection to a client, may block if no client has connected
+      yet<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODgetRequest"></a>getRequest : <code class="type"><a href="Http_types.request.html">request</a> * <a href="Http_types.connection.html">connection</a></code></pre><div class="info">
+shortcut method, blocks until a client has submit a request and
+      return a pair request * connection<br>
+</div>
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_types.html b/hacking/software/ocaml-http/html/Http_types.html
new file mode 100644 (file)
index 0000000..07f3d4e
--- /dev/null
@@ -0,0 +1,341 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="previous" href="Http_threaded_tcp_server.html">
+<link rel="next" href="Http_user_agent.html">
+<link rel="Up" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><link title="Exceptions" rel="Section" href="#2_Exceptions">
+<link title="OO representation of HTTP messages" rel="Section" href="#2_OOrepresentationofHTTPmessages">
+<link title="Daemon specification" rel="Section" href="#2_Daemonspecification">
+<link title="OO representation of other HTTP entities" rel="Section" href="#2_OOrepresentationofotherHTTPentities">
+<title>Http_types</title>
+</head>
+<body>
+<div class="navbar"><a href="Http_threaded_tcp_server.html">Previous</a>
+&nbsp;<a href="index.html">Up</a>
+&nbsp;<a href="Http_user_agent.html">Next</a>
+</div>
+<center><h1>Module <a href="type_Http_types.html">Http_types</a></h1></center>
+<br>
+<pre><span class="keyword">module</span> Http_types: <code class="code">sig</code> <a href="Http_types.html">..</a> <code class="code">end</code></pre>Type definitions<br>
+<hr width="100%">
+<pre><span class="keyword">type</span> <a name="TYPEversion"></a><code class="type"></code>version = <code class="type">[ `HTTP_1_0 | `HTTP_1_1 ]</code> </pre>
+<div class="info">
+HTTP version, actually only 1.0 and 1.1 are supported. Note that
+  'supported' here means only 'accepted inside a HTTP request line', no
+  different behaviours are actually implemented depending on HTTP version<br>
+</div>
+
+<pre><span class="keyword">type</span> <a name="TYPEmeth"></a><code class="type"></code>meth = <code class="type">[ `GET | `POST ]</code> </pre>
+<div class="info">
+HTTP method, actually only GET and POST methods are supported<br>
+</div>
+
+<pre><span class="keyword">type</span> <a name="TYPEdaemon_mode"></a><code class="type"></code>daemon_mode = <code class="type">[ `Fork | `Single | `Thread ]</code> </pre>
+<div class="info">
+Daemon behaviour wrt request handling. `Single mode use a single process
+  to handle all requests, no request is served until a previous one has been
+  fully served. `Fork mode fork a new process for each request, the new process
+  will execute the callback function and then exit. `Thread mode create a new
+  thread for each request, the new thread will execute the callback function and
+  then exit, threads can communicate using standard OCaml Thread library.<br>
+</div>
+
+<pre><span class="keyword">type</span> <a name="TYPEtcp_server"></a><code class="type"></code>tcp_server = <code class="type">sockaddr:Unix.sockaddr -><br>       timeout:int option -><br>       (Pervasives.in_channel -> Pervasives.out_channel -> unit) -> unit</code> </pre>
+<div class="info">
+A TCP server is a function taking an address on which bind and listen for
+  connections, an optional timeout after which abort client connections and a
+  callback function which in turn takes an input and an output channel as
+  arguments. After receiving this argument a TCP server sits and waits for
+  connection, on each connection it apply the callback function to channels
+  connected to client.<br>
+</div>
+
+<pre><span class="keyword">type</span> <a name="TYPEauth_info"></a><code class="type"></code>auth_info = <code class="type">[ `Basic of string * string ]</code> </pre>
+<div class="info">
+authentication information<br>
+</div>
+
+<pre><span class="keyword">type</span> <a name="TYPEinformational_substatus"></a><code class="type"></code>informational_substatus = <code class="type">[ `Continue | `Switching_protocols ]</code> </pre>
+<div class="info">
+<b>See also</b> <i>RFC2616</i> informational HTTP status<br>
+</div>
+
+<pre><span class="keyword">type</span> <a name="TYPEsuccess_substatus"></a><code class="type"></code>success_substatus = <code class="type">[ `Accepted<br>       | `Created<br>       | `No_content<br>       | `Non_authoritative_information<br>       | `OK<br>       | `Partial_content<br>       | `Reset_content ]</code> </pre>
+<div class="info">
+<b>See also</b> <i>RFC2616</i> success HTTP status<br>
+</div>
+
+<pre><span class="keyword">type</span> <a name="TYPEredirection_substatus"></a><code class="type"></code>redirection_substatus = <code class="type">[ `Found<br>       | `Moved_permanently<br>       | `Multiple_choices<br>       | `Not_modified<br>       | `See_other<br>       | `Temporary_redirect<br>       | `Use_proxy ]</code> </pre>
+<div class="info">
+<b>See also</b> <i>RFC2616</i> redirection HTTP status<br>
+</div>
+
+<pre><span class="keyword">type</span> <a name="TYPEclient_error_substatus"></a><code class="type"></code>client_error_substatus = <code class="type">[ `Bad_request<br>       | `Conflict<br>       | `Expectation_failed<br>       | `Forbidden<br>       | `Gone<br>       | `Length_required<br>       | `Method_not_allowed<br>       | `Not_acceptable<br>       | `Not_found<br>       | `Payment_required<br>       | `Precondition_failed<br>       | `Proxy_authentication_required<br>       | `Request_URI_too_large<br>       | `Request_entity_too_large<br>       | `Request_time_out<br>       | `Requested_range_not_satisfiable<br>       | `Unauthorized<br>       | `Unsupported_media_type ]</code> </pre>
+<div class="info">
+<b>See also</b> <i>RFC2616</i> client error HTTP status<br>
+</div>
+
+<pre><span class="keyword">type</span> <a name="TYPEserver_error_substatus"></a><code class="type"></code>server_error_substatus = <code class="type">[ `Bad_gateway<br>       | `Gateway_time_out<br>       | `HTTP_version_not_supported<br>       | `Internal_server_error<br>       | `Not_implemented<br>       | `Service_unavailable ]</code> </pre>
+<div class="info">
+<b>See also</b> <i>RFC2616</i> server error HTTP status<br>
+</div>
+
+<pre><span class="keyword">type</span> <a name="TYPEinformational_status"></a><code class="type"></code>informational_status = <code class="type">[ `Informational of <a href="Http_types.html#TYPEinformational_substatus">informational_substatus</a> ]</code> </pre>
+
+<pre><span class="keyword">type</span> <a name="TYPEsuccess_status"></a><code class="type"></code>success_status = <code class="type">[ `Success of <a href="Http_types.html#TYPEsuccess_substatus">success_substatus</a> ]</code> </pre>
+
+<pre><span class="keyword">type</span> <a name="TYPEredirection_status"></a><code class="type"></code>redirection_status = <code class="type">[ `Redirection of <a href="Http_types.html#TYPEredirection_substatus">redirection_substatus</a> ]</code> </pre>
+
+<pre><span class="keyword">type</span> <a name="TYPEclient_error_status"></a><code class="type"></code>client_error_status = <code class="type">[ `Client_error of <a href="Http_types.html#TYPEclient_error_substatus">client_error_substatus</a> ]</code> </pre>
+
+<pre><span class="keyword">type</span> <a name="TYPEserver_error_status"></a><code class="type"></code>server_error_status = <code class="type">[ `Server_error of <a href="Http_types.html#TYPEserver_error_substatus">server_error_substatus</a> ]</code> </pre>
+
+<pre><span class="keyword">type</span> <a name="TYPEerror_status"></a><code class="type"></code>error_status = <code class="type">[ `Client_error of <a href="Http_types.html#TYPEclient_error_substatus">client_error_substatus</a><br>       | `Server_error of <a href="Http_types.html#TYPEserver_error_substatus">server_error_substatus</a> ]</code> </pre>
+
+<pre><span class="keyword">type</span> <a name="TYPEstatus"></a><code class="type"></code>status = <code class="type">[ `Client_error of <a href="Http_types.html#TYPEclient_error_substatus">client_error_substatus</a><br>       | `Informational of <a href="Http_types.html#TYPEinformational_substatus">informational_substatus</a><br>       | `Redirection of <a href="Http_types.html#TYPEredirection_substatus">redirection_substatus</a><br>       | `Server_error of <a href="Http_types.html#TYPEserver_error_substatus">server_error_substatus</a><br>       | `Success of <a href="Http_types.html#TYPEsuccess_substatus">success_substatus</a> ]</code> </pre>
+<div class="info">
+HTTP status<br>
+</div>
+
+<pre><span class="keyword">type</span> <a name="TYPEstatus_code"></a><code class="type"></code>status_code = <code class="type">[ `Code of int | `Status of <a href="Http_types.html#TYPEstatus">status</a> ]</code> </pre>
+
+<br><code><span class="keyword">type</span> <a name="TYPEfile_source"></a><code class="type"></code>file_source = </code><table class="typetable">
+<tr>
+<td align="left" valign="top" >
+<code><span class="keyword">|</span></code></td>
+<td align="left" valign="top" >
+<code><span class="constructor">FileSrc</span> <span class="keyword">of</span> <code class="type">string</code></code></td>
+<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >filename</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
+</tr>
+<tr>
+<td align="left" valign="top" >
+<code><span class="keyword">|</span></code></td>
+<td align="left" valign="top" >
+<code><span class="constructor">InChanSrc</span> <span class="keyword">of</span> <code class="type">Pervasives.in_channel</code></code></td>
+<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >input channel</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
+</tr></table>
+
+<div class="info">
+File sources<br>
+</div>
+
+<br>
+<a name="2_Exceptions"></a>
+<h2>Exceptions</h2><br>
+<pre><span class="keyword">exception</span> <a name="EXCEPTIONInvalid_header"></a>Invalid_header <span class="keyword">of</span> <code class="type">string</code></pre>
+<div class="info">
+invalid header encountered<br>
+</div>
+<pre><span class="keyword">exception</span> <a name="EXCEPTIONInvalid_header_name"></a>Invalid_header_name <span class="keyword">of</span> <code class="type">string</code></pre>
+<div class="info">
+invalid header name encountered<br>
+</div>
+<pre><span class="keyword">exception</span> <a name="EXCEPTIONInvalid_header_value"></a>Invalid_header_value <span class="keyword">of</span> <code class="type">string</code></pre>
+<div class="info">
+invalid header value encountered<br>
+</div>
+<pre><span class="keyword">exception</span> <a name="EXCEPTIONInvalid_HTTP_version"></a>Invalid_HTTP_version <span class="keyword">of</span> <code class="type">string</code></pre>
+<div class="info">
+unsupported or invalid HTTP version encountered<br>
+</div>
+<pre><span class="keyword">exception</span> <a name="EXCEPTIONInvalid_HTTP_method"></a>Invalid_HTTP_method <span class="keyword">of</span> <code class="type">string</code></pre>
+<div class="info">
+unsupported or invalid HTTP method encountered<br>
+</div>
+<pre><span class="keyword">exception</span> <a name="EXCEPTIONInvalid_code"></a>Invalid_code <span class="keyword">of</span> <code class="type">int</code></pre>
+<div class="info">
+invalid HTTP status code integer representation encountered<br>
+</div>
+<pre><span class="keyword">exception</span> <a name="EXCEPTIONMalformed_URL"></a>Malformed_URL <span class="keyword">of</span> <code class="type">string</code></pre>
+<div class="info">
+invalid URL encountered<br>
+</div>
+<pre><span class="keyword">exception</span> <a name="EXCEPTIONMalformed_query"></a>Malformed_query <span class="keyword">of</span> <code class="type">string</code></pre>
+<div class="info">
+invalid query string encountered<br>
+</div>
+<pre><span class="keyword">exception</span> <a name="EXCEPTIONMalformed_query_part"></a>Malformed_query_part <span class="keyword">of</span> <code class="type">string * string</code></pre>
+<div class="info">
+invalid query string part encountered, arguments are parameter name and
+  parameter value<br>
+</div>
+<pre><span class="keyword">exception</span> <a name="EXCEPTIONMalformed_request_URI"></a>Malformed_request_URI <span class="keyword">of</span> <code class="type">string</code></pre>
+<div class="info">
+invalid request URI encountered<br>
+</div>
+<pre><span class="keyword">exception</span> <a name="EXCEPTIONMalformed_request"></a>Malformed_request <span class="keyword">of</span> <code class="type">string</code></pre>
+<div class="info">
+malformed request received<br>
+</div>
+<pre><span class="keyword">exception</span> <a name="EXCEPTIONMalformed_response"></a>Malformed_response <span class="keyword">of</span> <code class="type">string</code></pre>
+<div class="info">
+malformed response received, argument is response's first line<br>
+</div>
+<pre><span class="keyword">exception</span> <a name="EXCEPTIONParam_not_found"></a>Param_not_found <span class="keyword">of</span> <code class="type">string</code></pre>
+<div class="info">
+a parameter you were looking for was not found<br>
+</div>
+<pre><span class="keyword">exception</span> <a name="EXCEPTIONInvalid_status_line"></a>Invalid_status_line <span class="keyword">of</span> <code class="type">string</code></pre>
+<div class="info">
+invalid HTTP status line encountered<br>
+</div>
+<pre><span class="keyword">exception</span> <a name="EXCEPTIONHeader_not_found"></a>Header_not_found <span class="keyword">of</span> <code class="type">string</code></pre>
+<div class="info">
+an header you were looking for was not found<br>
+</div>
+<pre><span class="keyword">exception</span> <a name="EXCEPTIONQuit"></a>Quit</pre>
+<div class="info">
+raisable by callbacks to make main daemon quit, this is the only
+ 'clean' way to make start functions return<br>
+</div>
+<pre><span class="keyword">exception</span> <a name="EXCEPTIONUnauthorized"></a>Unauthorized <span class="keyword">of</span> <code class="type">string</code></pre>
+<div class="info">
+raisable by callbacks to force a 401 (unauthorized) HTTP answer.
+ This exception should be raised _before_ sending any data over given out
+ channel.
+<br>
+</div>
+<br>
+<a name="2_OOrepresentationofHTTPmessages"></a>
+<h2>OO representation of HTTP messages</h2><br>
+<pre><span class="keyword">class type</span> <a name="TYPEmessage"></a><a href="Http_types.message.html">message</a> = <code class="code">object</code> <a href="Http_types.message.html">..</a> <code class="code">end</code></pre><div class="info">
+HTTP generic messages.
+</div>
+<pre><span class="keyword">class type</span> <a name="TYPErequest"></a><a href="Http_types.request.html">request</a> = <code class="code">object</code> <a href="Http_types.request.html">..</a> <code class="code">end</code></pre><div class="info">
+HTTP requests
+</div>
+<pre><span class="keyword">class type</span> <a name="TYPEresponse"></a><a href="Http_types.response.html">response</a> = <code class="code">object</code> <a href="Http_types.response.html">..</a> <code class="code">end</code></pre><div class="info">
+HTTP responses
+</div>
+<br>
+<a name="2_Daemonspecification"></a>
+<h2>Daemon specification</h2><br>
+<br><code><span class="keyword">type</span> <a name="TYPEdaemon_spec"></a><code class="type"></code>daemon_spec = {</code><table class="typetable">
+<tr>
+<td align="left" valign="top" >
+<code>&nbsp;&nbsp;</code></td>
+<td align="left" valign="top" >
+<code>address&nbsp;: <code class="type">string</code>;</code></td>
+
+</tr>
+<tr>
+<td align="left" valign="top" >
+<code>&nbsp;&nbsp;</code></td>
+<td align="left" valign="top" >
+<code>auth&nbsp;: <code class="type">(string * <a href="Http_types.html#TYPEauth_info">auth_info</a>) option</code>;</code></td>
+<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >authentication requirements (currently only basic authentication is
+ supported). If set to None no authentication is required. If set to Some
+ ("realm", `Basic ("foo", "bar")), only clients authenticated with baisc
+ authentication, for realm "realm", providing username "foo" and password
+ "bar" are accepted; others are rejected with a 401 response code</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
+</tr>
+<tr>
+<td align="left" valign="top" >
+<code>&nbsp;&nbsp;</code></td>
+<td align="left" valign="top" >
+<code>callback&nbsp;: <code class="type"><a href="Http_types.request.html">request</a> -> Pervasives.out_channel -> unit</code>;</code></td>
+<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >function which will be called each time a correct HTTP request will be
+ received. 1st callback argument is an Http_types.request object
+ corresponding to the request received; 2nd argument is an output channel
+ corresponding to the socket connected to the client</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
+</tr>
+<tr>
+<td align="left" valign="top" >
+<code>&nbsp;&nbsp;</code></td>
+<td align="left" valign="top" >
+<code>mode&nbsp;: <code class="type"><a href="Http_types.html#TYPEdaemon_mode">daemon_mode</a></code>;</code></td>
+<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >requests handling mode, it can have three different values:<ul>
+<li>`Single -&gt; all requests will be handled by the same process,</li>
+<li>`Fork   -&gt; each request will be handled by a child process,</li>
+<li>`Thread -&gt; each request will be handled by a (new) thread</li>
+</ul>
+</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
+</tr>
+<tr>
+<td align="left" valign="top" >
+<code>&nbsp;&nbsp;</code></td>
+<td align="left" valign="top" >
+<code>port&nbsp;: <code class="type">int</code>;</code></td>
+<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >TCP port on which the daemon will be listening</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
+</tr>
+<tr>
+<td align="left" valign="top" >
+<code>&nbsp;&nbsp;</code></td>
+<td align="left" valign="top" >
+<code>root_dir&nbsp;: <code class="type">string option</code>;</code></td>
+<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >directory to which ocaml http will chdir before starting handling
+ requests; if None, no chdir will be performed (i.e. stay in the current
+ working directory)</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
+</tr>
+<tr>
+<td align="left" valign="top" >
+<code>&nbsp;&nbsp;</code></td>
+<td align="left" valign="top" >
+<code>exn_handler&nbsp;: <code class="type">(exn -> Pervasives.out_channel -> unit) option</code>;</code></td>
+<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >what to do when executing callback raises an exception.  If None, the
+ exception will be re-raised: in `Fork/`Thread mode the current
+ process/thread will be terminated. in `Single mode the exception is
+ ignored and the client socket closed. If Some callback, the callback will
+ be executed before acting as per None; the callback is meant to perform
+ some clean up actions, like releasing global mutexes in `Thread mode</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
+</tr>
+<tr>
+<td align="left" valign="top" >
+<code>&nbsp;&nbsp;</code></td>
+<td align="left" valign="top" >
+<code>timeout&nbsp;: <code class="type">int option</code>;</code></td>
+<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >timeout in seconds after which an incoming HTTP request will be
+ terminated closing the corresponding TCP connection; None disable the
+ timeout</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
+</tr>
+<tr>
+<td align="left" valign="top" >
+<code>&nbsp;&nbsp;</code></td>
+<td align="left" valign="top" >
+<code>auto_close&nbsp;: <code class="type">bool</code>;</code></td>
+<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >whether ocaml-http will automatically close the connection with the
+ client after callback has completed its execution. If set to true, close
+ will be attempted no matter if the callback raises an exception or not</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
+</tr></table>
+}
+
+<div class="info">
+daemon specification, describe the behaviour of an HTTP daemon.
+<p>
+
+ The default daemon specification is <a href="Http_daemon.html#VALdefault_spec"><code class="code">Http_daemon.default_spec</code></a><br>
+</div>
+
+<br>
+<a name="2_OOrepresentationofotherHTTPentities"></a>
+<h2>OO representation of other HTTP entities</h2><br>
+<pre><span class="keyword">class type</span> <a name="TYPEconnection"></a><a href="Http_types.connection.html">connection</a> = <code class="code">object</code> <a href="Http_types.connection.html">..</a> <code class="code">end</code></pre><div class="info">
+an HTTP connection from a client to a server
+</div>
+<pre><span class="keyword">class type</span> <a name="TYPEdaemon"></a><a href="Http_types.daemon.html">daemon</a> = <code class="code">object</code> <a href="Http_types.daemon.html">..</a> <code class="code">end</code></pre><div class="info">
+an HTTP daemon
+</div>
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_types.message.html b/hacking/software/ocaml-http/html/Http_types.message.html
new file mode 100644 (file)
index 0000000..6c71a9f
--- /dev/null
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="next" href="Http_types.request.html">
+<link rel="Up" href="Http_types.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_types.message</title>
+</head>
+<body>
+<div class="navbar">&nbsp;<a href="Http_types.html">Up</a>
+&nbsp;<a href="Http_types.request.html">Next</a>
+</div>
+<center><h1>Class type <a href="type_Http_types.message.html">Http_types.message</a></h1></center>
+<br>
+<pre><span class="keyword">class type</span> <a name="TYPEmessage"></a>message = <code class="code">object</code> <a href="Http_types.message.html">..</a> <code class="code">end</code></pre>HTTP generic messages. See <a href="Http_message.message.html"><code class="code">Http_message.message</code></a><br>
+<hr width="100%">
+<pre><span class="keyword">method</span> <a name="METHODversion"></a>version : <code class="type"><a href="Http_types.html#TYPEversion">version</a> option</code></pre><pre><span class="keyword">method</span> <a name="METHODsetVersion"></a>setVersion : <code class="type"><a href="Http_types.html#TYPEversion">version</a> -> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODbody"></a>body : <code class="type">string</code></pre><pre><span class="keyword">method</span> <a name="METHODsetBody"></a>setBody : <code class="type">string -> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODbodyBuf"></a>bodyBuf : <code class="type">Buffer.t</code></pre><pre><span class="keyword">method</span> <a name="METHODsetBodyBuf"></a>setBodyBuf : <code class="type">Buffer.t -> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODaddBody"></a>addBody : <code class="type">string -> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODaddBodyBuf"></a>addBodyBuf : <code class="type">Buffer.t -> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODaddHeader"></a>addHeader : <code class="type">name:string -> value:string -> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODaddHeaders"></a>addHeaders : <code class="type">(string * string) list -> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODreplaceHeader"></a>replaceHeader : <code class="type">name:string -> value:string -> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODreplaceHeaders"></a>replaceHeaders : <code class="type">(string * string) list -> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODremoveHeader"></a>removeHeader : <code class="type">name:string -> unit</code></pre><pre><span class="keyword">method</span> <a name="METHODhasHeader"></a>hasHeader : <code class="type">name:string -> bool</code></pre><pre><span class="keyword">method</span> <a name="METHODheader"></a>header : <code class="type">name:string -> string</code></pre><pre><span class="keyword">method</span> <a name="METHODheaders"></a>headers : <code class="type">(string * string) list</code></pre><pre><span class="keyword">method</span> <a name="METHODclientSockaddr"></a>clientSockaddr : <code class="type">Unix.sockaddr</code></pre><pre><span class="keyword">method</span> <a name="METHODclientAddr"></a>clientAddr : <code class="type">string</code></pre><pre><span class="keyword">method</span> <a name="METHODclientPort"></a>clientPort : <code class="type">int</code></pre><pre><span class="keyword">method</span> <a name="METHODserverSockaddr"></a>serverSockaddr : <code class="type">Unix.sockaddr</code></pre><pre><span class="keyword">method</span> <a name="METHODserverAddr"></a>serverAddr : <code class="type">string</code></pre><pre><span class="keyword">method</span> <a name="METHODserverPort"></a>serverPort : <code class="type">int</code></pre><pre><span class="keyword">method</span> <a name="METHODtoString"></a>toString : <code class="type">string</code></pre><pre><span class="keyword">method</span> <a name="METHODserialize"></a>serialize : <code class="type">Pervasives.out_channel -> unit</code></pre></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_types.request.html b/hacking/software/ocaml-http/html/Http_types.request.html
new file mode 100644 (file)
index 0000000..94083e5
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="previous" href="Http_types.message.html">
+<link rel="next" href="Http_types.response.html">
+<link rel="Up" href="Http_types.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_types.request</title>
+</head>
+<body>
+<div class="navbar"><a href="Http_types.message.html">Previous</a>
+&nbsp;<a href="Http_types.html">Up</a>
+&nbsp;<a href="Http_types.response.html">Next</a>
+</div>
+<center><h1>Class type <a href="type_Http_types.request.html">Http_types.request</a></h1></center>
+<br>
+<pre><span class="keyword">class type</span> <a name="TYPErequest"></a>request = <code class="code">object</code> <a href="Http_types.request.html">..</a> <code class="code">end</code></pre>HTTP requests<br>
+<b>Inherits</b><ul>
+<li><a href="Http_types.message.html"><code class="code">Http_types.message</code></a>    an HTTP request is a flavour of HTTP message</li>
+</ul>
+<hr width="100%">
+<pre><span class="keyword">method</span> <a name="METHODmeth"></a>meth : <code class="type"><a href="Http_types.html#TYPEmeth">meth</a></code></pre><div class="info">
+<b>Returns</b> request method<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODuri"></a>uri : <code class="type">string</code></pre><div class="info">
+<b>Returns</b> requested URI (including query string, fragment, ...)<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODpath"></a>path : <code class="type">string</code></pre><div class="info">
+<b>Returns</b> requested path<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODparam"></a>param : <code class="type">?meth:<a href="Http_types.html#TYPEmeth">meth</a> -> ?default:string -> string -> string</code></pre><div class="info">
+lookup a given parameter<br>
+<b>Raises</b> <code>Param_not_found</code> if parameter name was not found<br>
+<b>Returns</b> value associated to parameter name<br>
+</div>
+<div class="param_info"><code class="code">meth</code> : if given restrict the lookup area (e.g. if meth = POST than
+        only parameters received via POST are searched), if not given both GET
+        and POST parameter are searched in an unspecified order (actually the
+        implementation prefers POST parameters but this is not granted, you've
+        been warned)</div>
+<div class="param_info"><code class="code">default</code> : if provided, this value will be returned in case no
+        parameter of that name is available instead of raising Param_not_found</div>
+<pre><span class="keyword">method</span> <a name="METHODparamAll"></a>paramAll : <code class="type">?meth:<a href="Http_types.html#TYPEmeth">meth</a> -> string -> string list</code></pre><div class="info">
+like param above but return a list of values associated to given
+      parameter (a parameter could be defined indeed more than once: passed more
+      than once in a query string or passed both insider the url (the GET way)
+      and inside message body (the POST way))<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODparams"></a>params : <code class="type">(string * string) list</code></pre><div class="info">
+<b>Returns</b> the list of all received parameters<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODparams_GET"></a>params_GET : <code class="type">(string * string) list</code></pre><div class="info">
+<b>Returns</b> the list of all parameters received via GET<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODparams_POST"></a>params_POST : <code class="type">(string * string) list</code></pre><div class="info">
+<b>Returns</b> the list of all parameter received via POST<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODauthorization"></a>authorization : <code class="type"><a href="Http_types.html#TYPEauth_info">auth_info</a> option</code></pre><div class="info">
+<b>Returns</b> authorization information, if given by the client<br>
+</div>
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_types.response.html b/hacking/software/ocaml-http/html/Http_types.response.html
new file mode 100644 (file)
index 0000000..be7fdc9
--- /dev/null
@@ -0,0 +1,120 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="previous" href="Http_types.request.html">
+<link rel="next" href="Http_types.connection.html">
+<link rel="Up" href="Http_types.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_types.response</title>
+</head>
+<body>
+<div class="navbar"><a href="Http_types.request.html">Previous</a>
+&nbsp;<a href="Http_types.html">Up</a>
+&nbsp;<a href="Http_types.connection.html">Next</a>
+</div>
+<center><h1>Class type <a href="type_Http_types.response.html">Http_types.response</a></h1></center>
+<br>
+<pre><span class="keyword">class type</span> <a name="TYPEresponse"></a>response = <code class="code">object</code> <a href="Http_types.response.html">..</a> <code class="code">end</code></pre>HTTP responses<br>
+<b>Inherits</b><ul>
+<li><a href="Http_types.message.html"><code class="code">Http_types.message</code></a></li>
+</ul>
+<hr width="100%">
+<pre><span class="keyword">method</span> <a name="METHODcode"></a>code : <code class="type">int</code></pre><div class="info">
+<b>Returns</b> response code<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODsetCode"></a>setCode : <code class="type">int -> unit</code></pre><div class="info">
+set response code<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODstatus"></a>status : <code class="type"><a href="Http_types.html#TYPEstatus">status</a></code></pre><div class="info">
+<b>Returns</b> response status<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODsetStatus"></a>setStatus : <code class="type"><a href="Http_types.html#TYPEstatus">status</a> -> unit</code></pre><div class="info">
+set response status<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODreason"></a>reason : <code class="type">string</code></pre><div class="info">
+<b>Returns</b> reason string<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODsetReason"></a>setReason : <code class="type">string -> unit</code></pre><div class="info">
+set reason string<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODstatusLine"></a>statusLine : <code class="type">string</code></pre><div class="info">
+<b>Returns</b> status line<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODsetStatusLine"></a>setStatusLine : <code class="type">string -> unit</code></pre><div class="info">
+set status line<br>
+<b>Raises</b> <code>Invalid_status_line</code> if an invalid HTTP status line was passed<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODisInformational"></a>isInformational : <code class="type">bool</code></pre><div class="info">
+response is an informational one<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODisSuccess"></a>isSuccess : <code class="type">bool</code></pre><div class="info">
+response is a success one<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODisRedirection"></a>isRedirection : <code class="type">bool</code></pre><div class="info">
+response is a redirection one<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODisClientError"></a>isClientError : <code class="type">bool</code></pre><div class="info">
+response is a client error one<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODisServerError"></a>isServerError : <code class="type">bool</code></pre><div class="info">
+response is a server error one<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODisError"></a>isError : <code class="type">bool</code></pre><div class="info">
+response is either a client error or a server error response<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODaddBasicHeaders"></a>addBasicHeaders : <code class="type">unit</code></pre><div class="info">
+add basic headers to response, see <a href="Http_daemon.html#VALsend_basic_headers"><code class="code">Http_daemon.send_basic_headers</code></a><br>
+</div>
+<a name="2_facilitiestoaccesssomefrequentlyusedheaders"></a>
+<h2>facilities to access some frequently used headers</h2><pre><span class="keyword">method</span> <a name="METHODcontentType"></a>contentType : <code class="type">string</code></pre><div class="info">
+<b>Returns</b> Content-Type header value<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODsetContentType"></a>setContentType : <code class="type">string -> unit</code></pre><div class="info">
+set Content-Type header value<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODcontentEncoding"></a>contentEncoding : <code class="type">string</code></pre><div class="info">
+<b>Returns</b> Content-Encoding header value<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODsetContentEncoding"></a>setContentEncoding : <code class="type">string -> unit</code></pre><div class="info">
+set Content-Encoding header value<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODdate"></a>date : <code class="type">string</code></pre><div class="info">
+<b>Returns</b> Date header value<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODsetDate"></a>setDate : <code class="type">string -> unit</code></pre><div class="info">
+set Date header value<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODexpires"></a>expires : <code class="type">string</code></pre><div class="info">
+<b>Returns</b> Expires header value<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODsetExpires"></a>setExpires : <code class="type">string -> unit</code></pre><div class="info">
+set Expires header value<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODserver"></a>server : <code class="type">string</code></pre><div class="info">
+<b>Returns</b> Server header value<br>
+</div>
+<pre><span class="keyword">method</span> <a name="METHODsetServer"></a>setServer : <code class="type">string -> unit</code></pre><div class="info">
+set Server header value<br>
+</div>
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/Http_user_agent.html b/hacking/software/ocaml-http/html/Http_user_agent.html
new file mode 100644 (file)
index 0000000..b64a2c8
--- /dev/null
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link rel="previous" href="Http_types.html">
+<link rel="Up" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_user_agent</title>
+</head>
+<body>
+<div class="navbar"><a href="Http_types.html">Previous</a>
+&nbsp;<a href="index.html">Up</a>
+&nbsp;</div>
+<center><h1>Module <a href="type_Http_user_agent.html">Http_user_agent</a></h1></center>
+<br>
+<pre><span class="keyword">module</span> Http_user_agent: <code class="code">sig</code> <a href="Http_user_agent.html">..</a> <code class="code">end</code></pre>Minimal implementation of an HTTP 1.0/1.1 client. Interface is similar to
+ Gerd Stoplmann's Http_client module. Implementation is simpler and doesn't
+ handle HTTP redirection, proxies, ecc. The only reason for the existence of
+ this module is for performances and incremental elaboration of response's
+ bodies<br>
+<hr width="100%">
+<pre><span class="keyword">exception</span> <a name="EXCEPTIONHttp_error"></a>Http_error <span class="keyword">of</span> <code class="type">(int * string)</code></pre>
+<pre><span class="keyword">val</span> <a name="VALget"></a>get : <code class="type">?head_callback:(<a href="Http_types.html#TYPEstatus">Http_types.status</a> -> (string * string) list -> unit) -><br>       string -> string</code></pre><div class="info">
+<b>Raises</b> <code>Http_error</code> when response code &lt;&gt; 200<br>
+<b>Returns</b> HTTP response's body<br>
+</div>
+<div class="param_info"><code class="code">head_callback</code> : optional calllback invoked on response's status and
+ headers. If not provided no callback will be invoked</div>
+<pre><span class="keyword">val</span> <a name="VALget_iter"></a>get_iter : <code class="type">?head_callback:(<a href="Http_types.html#TYPEstatus">Http_types.status</a> -> (string * string) list -> unit) -><br>       (string -> unit) -> string -> unit</code></pre><div class="info">
+as above but iter callback function on HTTP response's body instead of
+ returning it as a string<br>
+</div>
+<pre><span class="keyword">val</span> <a name="VALhead"></a>head : <code class="type">string -> string</code></pre><div class="info">
+<b>Raises</b> <code>Http_error</code> when response code &lt;&gt; 200<br>
+<b>Returns</b> HTTP HEAD raw response<br>
+</div>
+</body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/index.html b/hacking/software/ocaml-http/html/index.html
new file mode 100644 (file)
index 0000000..af0943b
--- /dev/null
@@ -0,0 +1,94 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title></title>
+</head>
+<body>
+<center><h1></h1></center>
+<a href="index_types.html">Index of types</a><br>
+<a href="index_exceptions.html">Index of exceptions</a><br>
+<a href="index_values.html">Index of values</a><br>
+<a href="index_methods.html">Index of class methods</a><br>
+<a href="index_classes.html">Index of classes</a><br>
+<a href="index_class_types.html">Index of class types</a><br>
+<a href="index_modules.html">Index of modules</a><br>
+<br/><br>
+<table class="indextable">
+<tr><td><a href="Http_common.html">Http_common</a></td><td><div class="info">
+Common functionalities shared by other OCaml HTTP modules
+</div>
+</td></tr>
+<tr><td><a href="Http_constants.html">Http_constants</a></td><td><div class="info">
+Constants
+</div>
+</td></tr>
+<tr><td><a href="Http_daemon.html">Http_daemon</a></td><td><div class="info">
+Main OCaml HTTP module.
+</div>
+</td></tr>
+<tr><td><a href="Http_message.html">Http_message</a></td><td><div class="info">
+Object Oriented representation of HTTP messages
+</div>
+</td></tr>
+<tr><td><a href="Http_misc.html">Http_misc</a></td><td><div class="info">
+Helpers and other not better classified functions which should not be
+exposed in the final API
+</div>
+</td></tr>
+<tr><td><a href="Http_parser.html">Http_parser</a></td><td><div class="info">
+HTTP messages parsing
+</div>
+</td></tr>
+<tr><td><a href="Http_parser_sanity.html">Http_parser_sanity</a></td><td><div class="info">
+Sanity test functions related to HTTP message parsing
+</div>
+</td></tr>
+<tr><td><a href="Http_request.html">Http_request</a></td><td><div class="info">
+Object Oriented representation of HTTP requests
+</div>
+</td></tr>
+<tr><td><a href="Http_response.html">Http_response</a></td><td><div class="info">
+Object Oriented representation of HTTP responses
+</div>
+</td></tr>
+<tr><td><a href="Http_tcp_server.html">Http_tcp_server</a></td><td><div class="info">
+TCP servers used as low-levels for HTTP daemons
+</div>
+</td></tr>
+<tr><td><a href="Http_threaded_tcp_server.html">Http_threaded_tcp_server</a></td><td><div class="info">
+Multithreaded part of Http_tcp_server
+</div>
+</td></tr>
+<tr><td><a href="Http_types.html">Http_types</a></td><td><div class="info">
+Type definitions
+</div>
+</td></tr>
+<tr><td><a href="Http_user_agent.html">Http_user_agent</a></td><td><div class="info">
+Minimal implementation of an HTTP 1.0/1.1 client.
+</div>
+</td></tr>
+</table>
+</body>
+</html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/index_attributes.html b/hacking/software/ocaml-http/html/index_attributes.html
new file mode 100644 (file)
index 0000000..9d78c95
--- /dev/null
@@ -0,0 +1,32 @@
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Index of class attributes</title>
+</head>
+<body>
+<center><h1>Index of class attributes</h1></center>
+<table>
+</table><br>
+</body>
+</html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/index_class_types.html b/hacking/software/ocaml-http/html/index_class_types.html
new file mode 100644 (file)
index 0000000..8ab3b01
--- /dev/null
@@ -0,0 +1,61 @@
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Index of class types</title>
+</head>
+<body>
+<center><h1>Index of class types</h1></center>
+<table>
+<tr><td align="left"><br>C</td></tr>
+<tr><td><a href="Http_types.connection.html">connection</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+an HTTP connection from a client to a server
+</div>
+</td></tr>
+<tr><td align="left"><br>D</td></tr>
+<tr><td><a href="Http_types.daemon.html">daemon</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+an HTTP daemon
+</div>
+</td></tr>
+<tr><td align="left"><br>M</td></tr>
+<tr><td><a href="Http_types.message.html">message</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+HTTP generic messages.
+</div>
+</td></tr>
+<tr><td align="left"><br>R</td></tr>
+<tr><td><a href="Http_types.request.html">request</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+HTTP requests
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html">response</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+HTTP responses
+</div>
+</td></tr>
+</table><br>
+</body>
+</html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/index_classes.html b/hacking/software/ocaml-http/html/index_classes.html
new file mode 100644 (file)
index 0000000..1df8446
--- /dev/null
@@ -0,0 +1,55 @@
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Index of classes</title>
+</head>
+<body>
+<center><h1>Index of classes</h1></center>
+<table>
+<tr><td align="left"><br>D</td></tr>
+<tr><td><a href="Http_daemon.daemon.html">daemon</a> [<a href="Http_daemon.html">Http_daemon</a>]</td>
+<td><div class="info">
+Object oriented interface to HTTP daemons.
+</div>
+</td></tr>
+<tr><td align="left"><br>M</td></tr>
+<tr><td><a href="Http_message.message.html">message</a> [<a href="Http_message.html">Http_message</a>]</td>
+<td><div class="info">
+OO representation of an HTTP message
+</div>
+</td></tr>
+<tr><td align="left"><br>R</td></tr>
+<tr><td><a href="Http_request.request.html">request</a> [<a href="Http_request.html">Http_request</a>]</td>
+<td><div class="info">
+OO representation of an HTTP request
+</div>
+</td></tr>
+<tr><td><a href="Http_response.response.html">response</a> [<a href="Http_response.html">Http_response</a>]</td>
+<td><div class="info">
+OO representation of an HTTP response.
+</div>
+</td></tr>
+</table><br>
+</body>
+</html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/index_exceptions.html b/hacking/software/ocaml-http/html/index_exceptions.html
new file mode 100644 (file)
index 0000000..134b859
--- /dev/null
@@ -0,0 +1,127 @@
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Index of exceptions</title>
+</head>
+<body>
+<center><h1>Index of exceptions</h1></center>
+<table>
+<tr><td align="left"><br>H</td></tr>
+<tr><td><a href="Http_types.html#EXCEPTIONHeader_not_found">Header_not_found</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+an header you were looking for was not found
+</div>
+</td></tr>
+<tr><td><a href="Http_user_agent.html#EXCEPTIONHttp_error">Http_error</a> [<a href="Http_user_agent.html">Http_user_agent</a>]</td>
+<td></td></tr>
+<tr><td align="left"><br>I</td></tr>
+<tr><td><a href="Http_types.html#EXCEPTIONInvalid_HTTP_method">Invalid_HTTP_method</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+unsupported or invalid HTTP method encountered
+</div>
+</td></tr>
+<tr><td><a href="Http_types.html#EXCEPTIONInvalid_HTTP_version">Invalid_HTTP_version</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+unsupported or invalid HTTP version encountered
+</div>
+</td></tr>
+<tr><td><a href="Http_types.html#EXCEPTIONInvalid_code">Invalid_code</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+invalid HTTP status code integer representation encountered
+</div>
+</td></tr>
+<tr><td><a href="Http_types.html#EXCEPTIONInvalid_header">Invalid_header</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+invalid header encountered
+</div>
+</td></tr>
+<tr><td><a href="Http_types.html#EXCEPTIONInvalid_header_name">Invalid_header_name</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+invalid header name encountered
+</div>
+</td></tr>
+<tr><td><a href="Http_types.html#EXCEPTIONInvalid_header_value">Invalid_header_value</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+invalid header value encountered
+</div>
+</td></tr>
+<tr><td><a href="Http_types.html#EXCEPTIONInvalid_status_line">Invalid_status_line</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+invalid HTTP status line encountered
+</div>
+</td></tr>
+<tr><td align="left"><br>M</td></tr>
+<tr><td><a href="Http_types.html#EXCEPTIONMalformed_URL">Malformed_URL</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+invalid URL encountered
+</div>
+</td></tr>
+<tr><td><a href="Http_types.html#EXCEPTIONMalformed_query">Malformed_query</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+invalid query string encountered
+</div>
+</td></tr>
+<tr><td><a href="Http_types.html#EXCEPTIONMalformed_query_part">Malformed_query_part</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+invalid query string part encountered, arguments are parameter name and
+  parameter value
+</div>
+</td></tr>
+<tr><td><a href="Http_types.html#EXCEPTIONMalformed_request">Malformed_request</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+malformed request received
+</div>
+</td></tr>
+<tr><td><a href="Http_types.html#EXCEPTIONMalformed_request_URI">Malformed_request_URI</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+invalid request URI encountered
+</div>
+</td></tr>
+<tr><td><a href="Http_types.html#EXCEPTIONMalformed_response">Malformed_response</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+malformed response received, argument is response's first line
+</div>
+</td></tr>
+<tr><td align="left"><br>P</td></tr>
+<tr><td><a href="Http_types.html#EXCEPTIONParam_not_found">Param_not_found</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+a parameter you were looking for was not found
+</div>
+</td></tr>
+<tr><td align="left"><br>Q</td></tr>
+<tr><td><a href="Http_types.html#EXCEPTIONQuit">Quit</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+raisable by callbacks to make main daemon quit, this is the only
+ 'clean' way to make start functions return
+</div>
+</td></tr>
+<tr><td align="left"><br>U</td></tr>
+<tr><td><a href="Http_types.html#EXCEPTIONUnauthorized">Unauthorized</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+raisable by callbacks to force a 401 (unauthorized) HTTP answer.
+</div>
+</td></tr>
+</table><br>
+</body>
+</html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/index_methods.html b/hacking/software/ocaml-http/html/index_methods.html
new file mode 100644 (file)
index 0000000..2c453d9
--- /dev/null
@@ -0,0 +1,389 @@
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Index of class methods</title>
+</head>
+<body>
+<center><h1>Index of class methods</h1></center>
+<table>
+<tr><td align="left"><br>A</td></tr>
+<tr><td><a href="Http_types.daemon.html#METHODaccept">accept</a> [<a href="Http_types.daemon.html">Http_types.daemon</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODaddBasicHeaders">addBasicHeaders</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+add basic headers to response, see <a href="Http_daemon.html#VALsend_basic_headers"><code class="code">Http_daemon.send_basic_headers</code></a>
+</div>
+</td></tr>
+<tr><td><a href="Http_types.message.html#METHODaddBody">addBody</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODaddBody">addBody</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+append a string to message body
+</div>
+</td></tr>
+<tr><td><a href="Http_types.message.html#METHODaddBodyBuf">addBodyBuf</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODaddBodyBuf">addBodyBuf</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+append a whole buffer to message body
+</div>
+</td></tr>
+<tr><td><a href="Http_types.message.html#METHODaddHeader">addHeader</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODaddHeader">addHeader</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+add an HTTP header
+</div>
+</td></tr>
+<tr><td><a href="Http_types.message.html#METHODaddHeaders">addHeaders</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODaddHeaders">addHeaders</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+add a list of HTTP headers
+</div>
+</td></tr>
+<tr><td><a href="Http_types.request.html#METHODauthorization">authorization</a> [<a href="Http_types.request.html">Http_types.request</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td align="left"><br>B</td></tr>
+<tr><td><a href="Http_types.message.html#METHODbody">body</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODbody">body</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_types.message.html#METHODbodyBuf">bodyBuf</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODbodyBuf">bodyBuf</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td align="left"><br>C</td></tr>
+<tr><td><a href="Http_types.message.html#METHODclientAddr">clientAddr</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODclientAddr">clientAddr</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_types.message.html#METHODclientPort">clientPort</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODclientPort">clientPort</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_types.message.html#METHODclientSockaddr">clientSockaddr</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODclientSockaddr">clientSockaddr</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_types.connection.html#METHODclose">close</a> [<a href="Http_types.connection.html">Http_types.connection</a>]</td>
+<td><div class="info">
+close connection to client.
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODcode">code</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODcontentEncoding">contentEncoding</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODcontentType">contentType</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td align="left"><br>D</td></tr>
+<tr><td><a href="Http_types.response.html#METHODdate">date</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td align="left"><br>E</td></tr>
+<tr><td><a href="Http_types.response.html#METHODexpires">expires</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td align="left"><br>F</td></tr>
+<tr><td><a href="Http_message.message.html#METHODfstLineToString">fstLineToString</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td align="left"><br>G</td></tr>
+<tr><td><a href="Http_types.connection.html#METHODgetRequest">getRequest</a> [<a href="Http_types.connection.html">Http_types.connection</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_types.daemon.html#METHODgetRequest">getRequest</a> [<a href="Http_types.daemon.html">Http_types.daemon</a>]</td>
+<td><div class="info">
+shortcut method, blocks until a client has submit a request and
+      return a pair request * connection
+</div>
+</td></tr>
+<tr><td align="left"><br>H</td></tr>
+<tr><td><a href="Http_types.message.html#METHODhasHeader">hasHeader</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODhasHeader">hasHeader</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_types.message.html#METHODheader">header</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODheader">header</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_types.message.html#METHODheaders">headers</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODheaders">headers</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td align="left"><br>I</td></tr>
+<tr><td><a href="Http_types.response.html#METHODisClientError">isClientError</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+response is a client error one
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODisError">isError</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+response is either a client error or a server error response
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODisInformational">isInformational</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+response is an informational one
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODisRedirection">isRedirection</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+response is a redirection one
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODisServerError">isServerError</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+response is a server error one
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODisSuccess">isSuccess</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+response is a success one
+</div>
+</td></tr>
+<tr><td align="left"><br>M</td></tr>
+<tr><td><a href="Http_types.request.html#METHODmeth">meth</a> [<a href="Http_types.request.html">Http_types.request</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td align="left"><br>P</td></tr>
+<tr><td><a href="Http_types.request.html#METHODparam">param</a> [<a href="Http_types.request.html">Http_types.request</a>]</td>
+<td><div class="info">
+lookup a given parameter
+</div>
+</td></tr>
+<tr><td><a href="Http_types.request.html#METHODparamAll">paramAll</a> [<a href="Http_types.request.html">Http_types.request</a>]</td>
+<td><div class="info">
+like param above but return a list of values associated to given
+      parameter (a parameter could be defined indeed more than once: passed more
+      than once in a query string or passed both insider the url (the GET way)
+      and inside message body (the POST way))
+</div>
+</td></tr>
+<tr><td><a href="Http_types.request.html#METHODparams">params</a> [<a href="Http_types.request.html">Http_types.request</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_types.request.html#METHODparams_GET">params_GET</a> [<a href="Http_types.request.html">Http_types.request</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_types.request.html#METHODparams_POST">params_POST</a> [<a href="Http_types.request.html">Http_types.request</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_types.request.html#METHODpath">path</a> [<a href="Http_types.request.html">Http_types.request</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td align="left"><br>R</td></tr>
+<tr><td><a href="Http_types.response.html#METHODreason">reason</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_types.message.html#METHODremoveHeader">removeHeader</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODremoveHeader">removeHeader</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+remove _all_ occurences of an HTTP header from the message
+</div>
+</td></tr>
+<tr><td><a href="Http_types.message.html#METHODreplaceHeader">replaceHeader</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODreplaceHeader">replaceHeader</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+like addHeader but replace previous definition of the same header
+</div>
+</td></tr>
+<tr><td><a href="Http_types.message.html#METHODreplaceHeaders">replaceHeaders</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODreplaceHeaders">replaceHeaders</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+like addHeaders but replace previous definition of headers that were
+        already defined
+</div>
+</td></tr>
+<tr><td><a href="Http_types.connection.html#METHODrespond_with">respond_with</a> [<a href="Http_types.connection.html">Http_types.connection</a>]</td>
+<td><div class="info">
+respond to client sending it a response
+</div>
+</td></tr>
+<tr><td align="left"><br>S</td></tr>
+<tr><td><a href="Http_types.message.html#METHODserialize">serialize</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODserialize">serialize</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+serialize the message over an output channel
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODserver">server</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_types.message.html#METHODserverAddr">serverAddr</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODserverAddr">serverAddr</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_types.message.html#METHODserverPort">serverPort</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODserverPort">serverPort</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_types.message.html#METHODserverSockaddr">serverSockaddr</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODserverSockaddr">serverSockaddr</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_types.message.html#METHODsetBody">setBody</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODsetBody">setBody</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+set message body
+</div>
+</td></tr>
+<tr><td><a href="Http_types.message.html#METHODsetBodyBuf">setBodyBuf</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODsetBodyBuf">setBodyBuf</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+set a new Buffer.t used to keep message body
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODsetCode">setCode</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+set response code
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODsetContentEncoding">setContentEncoding</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+set Content-Encoding header value
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODsetContentType">setContentType</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+set Content-Type header value
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODsetDate">setDate</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+set Date header value
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODsetExpires">setExpires</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+set Expires header value
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODsetReason">setReason</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+set reason string
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODsetServer">setServer</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+set Server header value
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODsetStatus">setStatus</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+set response status
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODsetStatusLine">setStatusLine</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+set status line
+</div>
+</td></tr>
+<tr><td><a href="Http_types.message.html#METHODsetVersion">setVersion</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODsetVersion">setVersion</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+set message HTTP version
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODstatus">status</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_types.response.html#METHODstatusLine">statusLine</a> [<a href="Http_types.response.html">Http_types.response</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td align="left"><br>T</td></tr>
+<tr><td><a href="Http_types.message.html#METHODtoString">toString</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODtoString">toString</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td align="left"><br>U</td></tr>
+<tr><td><a href="Http_types.request.html#METHODuri">uri</a> [<a href="Http_types.request.html">Http_types.request</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td align="left"><br>V</td></tr>
+<tr><td><a href="Http_types.message.html#METHODversion">version</a> [<a href="Http_types.message.html">Http_types.message</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_message.message.html#METHODversion">version</a> [<a href="Http_message.message.html">Http_message.message</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+</table><br>
+</body>
+</html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/index_module_types.html b/hacking/software/ocaml-http/html/index_module_types.html
new file mode 100644 (file)
index 0000000..ed2fbc8
--- /dev/null
@@ -0,0 +1,32 @@
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Index of module types</title>
+</head>
+<body>
+<center><h1>Index of module types</h1></center>
+<table>
+</table><br>
+</body>
+</html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/index_modules.html b/hacking/software/ocaml-http/html/index_modules.html
new file mode 100644 (file)
index 0000000..3c24614
--- /dev/null
@@ -0,0 +1,105 @@
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Index of modules</title>
+</head>
+<body>
+<center><h1>Index of modules</h1></center>
+<table>
+<tr><td align="left"><br>H</td></tr>
+<tr><td><a href="Http_common.html">Http_common</a> </td>
+<td><div class="info">
+Common functionalities shared by other OCaml HTTP modules
+</div>
+</td></tr>
+<tr><td><a href="Http_constants.html">Http_constants</a> </td>
+<td><div class="info">
+Constants
+</div>
+</td></tr>
+<tr><td><a href="Http_daemon.html">Http_daemon</a> </td>
+<td><div class="info">
+Main OCaml HTTP module.
+</div>
+</td></tr>
+<tr><td><a href="Http_message.html">Http_message</a> </td>
+<td><div class="info">
+Object Oriented representation of HTTP messages
+</div>
+</td></tr>
+<tr><td><a href="Http_misc.html">Http_misc</a> </td>
+<td><div class="info">
+Helpers and other not better classified functions which should not be
+exposed in the final API
+</div>
+</td></tr>
+<tr><td><a href="Http_parser.html">Http_parser</a> </td>
+<td><div class="info">
+HTTP messages parsing
+</div>
+</td></tr>
+<tr><td><a href="Http_parser_sanity.html">Http_parser_sanity</a> </td>
+<td><div class="info">
+Sanity test functions related to HTTP message parsing
+</div>
+</td></tr>
+<tr><td><a href="Http_request.html">Http_request</a> </td>
+<td><div class="info">
+Object Oriented representation of HTTP requests
+</div>
+</td></tr>
+<tr><td><a href="Http_response.html">Http_response</a> </td>
+<td><div class="info">
+Object Oriented representation of HTTP responses
+</div>
+</td></tr>
+<tr><td><a href="Http_tcp_server.html">Http_tcp_server</a> </td>
+<td><div class="info">
+TCP servers used as low-levels for HTTP daemons
+</div>
+</td></tr>
+<tr><td><a href="Http_threaded_tcp_server.html">Http_threaded_tcp_server</a> </td>
+<td><div class="info">
+Multithreaded part of Http_tcp_server
+</div>
+</td></tr>
+<tr><td><a href="Http_types.html">Http_types</a> </td>
+<td><div class="info">
+Type definitions
+</div>
+</td></tr>
+<tr><td><a href="Http_user_agent.html">Http_user_agent</a> </td>
+<td><div class="info">
+Minimal implementation of an HTTP 1.0/1.1 client.
+</div>
+</td></tr>
+<tr><td align="left"><br>T</td></tr>
+<tr><td><a href="Http_daemon.Trivial.html">Trivial</a> [<a href="Http_daemon.html">Http_daemon</a>]</td>
+<td><div class="info">
+Trivial static pages HTTP daemon.
+</div>
+</td></tr>
+</table><br>
+</body>
+</html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/index_types.html b/hacking/software/ocaml-http/html/index_types.html
new file mode 100644 (file)
index 0000000..993877a
--- /dev/null
@@ -0,0 +1,120 @@
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Index of types</title>
+</head>
+<body>
+<center><h1>Index of types</h1></center>
+<table>
+<tr><td align="left"><br>A</td></tr>
+<tr><td><a href="Http_types.html#TYPEauth_info">auth_info</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+authentication information
+</div>
+</td></tr>
+<tr><td align="left"><br>C</td></tr>
+<tr><td><a href="Http_types.html#TYPEclient_error_status">client_error_status</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_types.html#TYPEclient_error_substatus">client_error_substatus</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td align="left"><br>D</td></tr>
+<tr><td><a href="Http_types.html#TYPEdaemon_mode">daemon_mode</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+Daemon behaviour wrt request handling.
+</div>
+</td></tr>
+<tr><td><a href="Http_types.html#TYPEdaemon_spec">daemon_spec</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+daemon specification, describe the behaviour of an HTTP daemon.
+</div>
+</td></tr>
+<tr><td align="left"><br>E</td></tr>
+<tr><td><a href="Http_types.html#TYPEerror_status">error_status</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td></td></tr>
+<tr><td align="left"><br>F</td></tr>
+<tr><td><a href="Http_types.html#TYPEfile_source">file_source</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+File sources
+</div>
+</td></tr>
+<tr><td align="left"><br>I</td></tr>
+<tr><td><a href="Http_types.html#TYPEinformational_status">informational_status</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_types.html#TYPEinformational_substatus">informational_substatus</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td align="left"><br>M</td></tr>
+<tr><td><a href="Http_types.html#TYPEmeth">meth</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+HTTP method, actually only GET and POST methods are supported
+</div>
+</td></tr>
+<tr><td align="left"><br>R</td></tr>
+<tr><td><a href="Http_types.html#TYPEredirection_status">redirection_status</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_types.html#TYPEredirection_substatus">redirection_substatus</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td align="left"><br>S</td></tr>
+<tr><td><a href="Http_types.html#TYPEserver_error_status">server_error_status</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_types.html#TYPEserver_error_substatus">server_error_substatus</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_types.html#TYPEstatus">status</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+HTTP status
+</div>
+</td></tr>
+<tr><td><a href="Http_types.html#TYPEstatus_code">status_code</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_types.html#TYPEsuccess_status">success_status</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_types.html#TYPEsuccess_substatus">success_substatus</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td align="left"><br>T</td></tr>
+<tr><td><a href="Http_types.html#TYPEtcp_server">tcp_server</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+A TCP server is a function taking an address on which bind and listen for
+  connections, an optional timeout after which abort client connections and a
+  callback function which in turn takes an input and an output channel as
+  arguments.
+</div>
+</td></tr>
+<tr><td align="left"><br>V</td></tr>
+<tr><td><a href="Http_types.html#TYPEversion">version</a> [<a href="Http_types.html">Http_types</a>]</td>
+<td><div class="info">
+HTTP version, actually only 1.0 and 1.1 are supported.
+</div>
+</td></tr>
+</table><br>
+</body>
+</html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/index_values.html b/hacking/software/ocaml-http/html/index_values.html
new file mode 100644 (file)
index 0000000..4ed576a
--- /dev/null
@@ -0,0 +1,473 @@
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Index of values</title>
+</head>
+<body>
+<center><h1>Index of values</h1></center>
+<table>
+<tr><td align="left"><br>B</td></tr>
+<tr><td><a href="Http_misc.html#VALbuf_of_inchan">buf_of_inchan</a> [<a href="Http_misc.html">Http_misc</a>]</td>
+<td><div class="info">
+reads from an input channel till it End_of_file and returns what has been
+  read; if limit is given returned buffer will contains at most first 'limit'
+  bytes read from input channel
+</div>
+</td></tr>
+<tr><td><a href="Http_misc.html#VALbuild_sockaddr">build_sockaddr</a> [<a href="Http_misc.html">Http_misc</a>]</td>
+<td><div class="info">
+build a Unix.sockaddr inet address from a string representation of an IP
+  address and a port number
+</div>
+</td></tr>
+<tr><td align="left"><br>C</td></tr>
+<tr><td><a href="Http_daemon.Trivial.html#VALcallback">callback</a> [<a href="Http_daemon.Trivial.html">Http_daemon.Trivial</a>]</td>
+<td><div class="info">
+callback function, exposed if you like to use it as a basis to define
+      a more powerful daemon
+</div>
+</td></tr>
+<tr><td><a href="Http_common.html#VALcode_of_status">code_of_status</a> [<a href="Http_common.html">Http_common</a>]</td>
+<td><div class="info">
+converts an HTTP status to the corresponding integer value
+</div>
+</td></tr>
+<tr><td><a href="Http_constants.html#VALcrlf">crlf</a> [<a href="Http_constants.html">Http_constants</a>]</td>
+<td><div class="info">
+"\r\n" string
+</div>
+</td></tr>
+<tr><td align="left"><br>D</td></tr>
+<tr><td><a href="Http_daemon.html#VALdaemon_spec">daemon_spec</a> [<a href="Http_daemon.html">Http_daemon</a>]</td>
+<td><div class="info">
+currified daemon_spec constructor.
+</div>
+</td></tr>
+<tr><td><a href="Http_misc.html#VALdate_822">date_822</a> [<a href="Http_misc.html">Http_misc</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_common.html#VALdebug">debug</a> [<a href="Http_common.html">Http_common</a>]</td>
+<td><div class="info">
+whether debugging messages are enabled or not, can be changed at runtime
+</div>
+</td></tr>
+<tr><td><a href="Http_common.html#VALdebug_print">debug_print</a> [<a href="Http_common.html">Http_common</a>]</td>
+<td><div class="info">
+print a string on stderr only if debugging is enabled
+</div>
+</td></tr>
+<tr><td><a href="Http_constants.html#VALdefault_addr">default_addr</a> [<a href="Http_constants.html">Http_constants</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_constants.html#VALdefault_auth">default_auth</a> [<a href="Http_constants.html">Http_constants</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_constants.html#VALdefault_auto_close">default_auto_close</a> [<a href="Http_constants.html">Http_constants</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_constants.html#VALdefault_callback">default_callback</a> [<a href="Http_constants.html">Http_constants</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_constants.html#VALdefault_exn_handler">default_exn_handler</a> [<a href="Http_constants.html">Http_constants</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_constants.html#VALdefault_mode">default_mode</a> [<a href="Http_constants.html">Http_constants</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_constants.html#VALdefault_port">default_port</a> [<a href="Http_constants.html">Http_constants</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_constants.html#VALdefault_root_dir">default_root_dir</a> [<a href="Http_constants.html">Http_constants</a>]</td>
+<td></td></tr>
+<tr><td><a href="Http_daemon.html#VALdefault_spec">default_spec</a> [<a href="Http_daemon.html">Http_daemon</a>]</td>
+<td><div class="info">
+default daemon specification: listen on 0.0.0.0, port 80, "always ok" callback  (return an empty response, response code 200), fork a child for each request, do not change to a root directory (i.e. keep cwd), 300 seconds timeout, ignores exceptions, no authentication required, do not automatically close client connections after callback
+</div>
+</td></tr>
+<tr><td><a href="Http_constants.html#VALdefault_timeout">default_timeout</a> [<a href="Http_constants.html">Http_constants</a>]</td>
+<td></td></tr>
+<tr><td align="left"><br>E</td></tr>
+<tr><td><a href="Http_misc.html#VALerror">error</a> [<a href="Http_misc.html">Http_misc</a>]</td>
+<td><div class="info">
+print an error msg to stderr.
+</div>
+</td></tr>
+<tr><td><a href="Http_misc.html#VALexplode_sockaddr">explode_sockaddr</a> [<a href="Http_misc.html">Http_misc</a>]</td>
+<td><div class="info">
+explode an _inet_ Unix.sockaddr address in a string representation of an
+  IP address and a port number
+</div>
+</td></tr>
+<tr><td align="left"><br>F</td></tr>
+<tr><td><a href="Http_misc.html#VALfilesize">filesize</a> [<a href="Http_misc.html">Http_misc</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_misc.html#VALfinally">finally</a> [<a href="Http_misc.html">Http_misc</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_tcp_server.html#VALfork">fork</a> [<a href="Http_tcp_server.html">Http_tcp_server</a>]</td>
+<td><div class="info">
+multi process server
+</div>
+</td></tr>
+<tr><td align="left"><br>G</td></tr>
+<tr><td><a href="Http_user_agent.html#VALget">get</a> [<a href="Http_user_agent.html">Http_user_agent</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_user_agent.html#VALget_iter">get_iter</a> [<a href="Http_user_agent.html">Http_user_agent</a>]</td>
+<td><div class="info">
+as above but iter callback function on HTTP response's body instead of
+ returning it as a string
+</div>
+</td></tr>
+<tr><td align="left"><br>H</td></tr>
+<tr><td><a href="Http_user_agent.html#VALhead">head</a> [<a href="Http_user_agent.html">Http_user_agent</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_parser_sanity.html#VALheal_header">heal_header</a> [<a href="Http_parser_sanity.html">Http_parser_sanity</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_parser_sanity.html#VALheal_header_name">heal_header_name</a> [<a href="Http_parser_sanity.html">Http_parser_sanity</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_parser_sanity.html#VALheal_header_value">heal_header_value</a> [<a href="Http_parser_sanity.html">Http_parser_sanity</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_common.html#VALhttp_version">http_version</a> [<a href="Http_common.html">Http_common</a>]</td>
+<td><div class="info">
+see <a href="Http_constants.html#VALversion"><code class="code">Http_constants.version</code></a>
+</div>
+</td></tr>
+<tr><td align="left"><br>I</td></tr>
+<tr><td><a href="Http_tcp_server.html#VALinit_socket">init_socket</a> [<a href="Http_tcp_server.html">Http_tcp_server</a>]</td>
+<td><div class="info">
+initialize a passive socket listening on given Unix.sockaddr
+</div>
+</td></tr>
+<tr><td><a href="Http_common.html#VALis_client_error">is_client_error</a> [<a href="Http_common.html">Http_common</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_misc.html#VALis_directory">is_directory</a> [<a href="Http_misc.html">Http_misc</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_common.html#VALis_error">is_error</a> [<a href="Http_common.html">Http_common</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_common.html#VALis_informational">is_informational</a> [<a href="Http_common.html">Http_common</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_common.html#VALis_redirection">is_redirection</a> [<a href="Http_common.html">Http_common</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_common.html#VALis_server_error">is_server_error</a> [<a href="Http_common.html">Http_common</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td><a href="Http_common.html#VALis_success">is_success</a> [<a href="Http_common.html">Http_common</a>]</td>
+<td><div class="info">
+</div>
+</td></tr>
+<tr><td align="left"><br>L</td></tr>
+<tr><td><a href="Http_misc.html#VALlist_assoc_all">list_assoc_all</a> [<a href="Http_misc.html">Http_misc</a>]</td>
+<td><div class="info">
+like List.assoc but return all bindings of a given key instead of the
+  leftmost one only
+</div>
+</td></tr>
+<tr><td><a href="Http_misc.html#VALls">ls</a> [<a href="Http_misc.html">Http_misc</a>]</td>
+<td><div class="info">
+given a dir handle
+</div>
+</td></tr>
+<tr><td align="left"><br>M</td></tr>
+<tr><td><a href="Http_daemon.Trivial.html#VALmain">main</a> [<a href="Http_daemon.Trivial.html">Http_daemon.Trivial</a>]</td>
+<td><div class="info">
+start the "trivial" HTTP daemon
+
+</div>
+</td></tr>
+<tr><td><a href="Http_daemon.html#VALmain">main</a> [<a href="Http_daemon.html">Http_daemon</a>]</td>
+<td><div class="info">
+start an HTTP daemon
+
+</div>
+</td></tr>
+<tr><td><a href="Http_common.html#VALmethod_of_string">method_of_string</a> [<a href="Http_common.html">Http_common</a>]</td>
+<td><div class="info">
+parse an HTTP method from a string
+</div>
+</td></tr>
+<tr><td align="left"><br>N</td></tr>
+<tr><td><a href="Http_parser_sanity.html#VALnormalize_header_value">normalize_header_value</a> [<a href="Http_parser_sanity.html">Http_parser_sanity</a>]</td>
+<td><div class="info">
+remove heading and/or trailing LWS sequences as per RFC2616
+</div>
+</td></tr>
+<tr><td align="left"><br>P</td></tr>
+<tr><td><a href="Http_parser.html#VALparse_headers">parse_headers</a> [<a href="Http_parser.html">Http_parser</a>]</td>
+<td><div class="info">
+parse HTTP headers.
+</div>
+</td></tr>
+<tr><td><a href="Http_parser.html#VALparse_path">parse_path</a> [<a href="Http_parser.html">Http_parser</a>]</td>
+<td><div class="info">
+parse the base path (removing query string, fragment, ....) from an URL
+</div>
+</td></tr>
+<tr><td><a href="Http_parser.html#VALparse_query_get_params">parse_query_get_params</a> [<a href="Http_parser.html">Http_parser</a>]</td>
+<td><div class="info">
+parse HTTP GET parameters from an URL; paramater which were passed with no
+  value (like 'x' in "/foo.cgi?a=10&amp;x=&amp;c=9") are returned associated with the
+  empty ("") string.
+</div>
+</td></tr>
+<tr><td><a href="Http_parser.html#VALparse_request">parse_request</a> [<a href="Http_parser.html">Http_parser</a>]</td>
+<td><div class="info">
+given an input channel, reads from it a GET HTTP request and
+</div>
+</td></tr>
+<tr><td><a href="Http_parser.html#VALparse_request_fst_line">parse_request_fst_line</a> [<a href="Http_parser.html">Http_parser</a>]</td>
+<td><div class="info">
+parse 1st line of an HTTP request
+</div>
+</td></tr>
+<tr><td><a href="Http_parser.html#VALparse_response_fst_line">parse_response_fst_line</a> [<a href="Http_parser.html">Http_parser</a>]</td>
+<td><div class="info">
+parse 1st line of an HTTP response
+
+</div>
+</td></tr>
+<tr><td><a href="Http_misc.html#VALpeername_of_in_channel">peername_of_in_channel</a> [<a href="Http_misc.html">Http_misc</a>]</td>
+<td><div class="info">
+as above but works on in_channels
+</div>
+</td></tr>
+<tr><td><a href="Http_misc.html#VALpeername_of_out_channel">peername_of_out_channel</a> [<a href="Http_misc.html">Http_misc</a>]</td>
+<td><div class="info">
+given an out_channel build on top of a socket, return peername related to
+  that socket
+</div>
+</td></tr>
+<tr><td align="left"><br>R</td></tr>
+<tr><td><a href="Http_misc.html#VALreason_phrase_of_code">reason_phrase_of_code</a> [<a href="Http_misc.html">Http_misc</a>]</td>
+<td><div class="info">
+given an HTTP response code return the corresponding reason phrase
+</div>
+</td></tr>
+<tr><td><a href="Http_daemon.html#VALrespond">respond</a> [<a href="Http_daemon.html">Http_daemon</a>]</td>
+<td><div class="info">
+high level response function, respond on outchan sending: basic headers
+  (including Content-Length computed using 'body' argument), headers probided
+  via 'headers' argument, body given via 'body' argument.
+</div>
+</td></tr>
+<tr><td><a href="Http_daemon.html#VALrespond_error">respond_error</a> [<a href="Http_daemon.html">Http_daemon</a>]</td>
+<td><div class="info">
+send an "error" response (i.e.
+</div>
+</td></tr>
+<tr><td><a href="Http_daemon.html#VALrespond_file">respond_file</a> [<a href="Http_daemon.html">Http_daemon</a>]</td>
+<td><div class="info">
+tipical static pages http daemon behaviour, if requested url is a file,
+  return it, it it is a directory return a directory listing of it
+</div>
+</td></tr>
+<tr><td><a href="Http_daemon.html#VALrespond_forbidden">respond_forbidden</a> [<a href="Http_daemon.html">Http_daemon</a>]</td>
+<td><div class="info">
+send a 403 (forbidden) HTTP response
+</div>
+</td></tr>
+<tr><td><a href="Http_daemon.html#VALrespond_not_found">respond_not_found</a> [<a href="Http_daemon.html">Http_daemon</a>]</td>
+<td><div class="info">
+send a 404 (not found) HTTP response
+</div>
+</td></tr>
+<tr><td><a href="Http_daemon.html#VALrespond_redirect">respond_redirect</a> [<a href="Http_daemon.html">Http_daemon</a>]</td>
+<td><div class="info">
+send a "redirection" class response, optional body argument contains data
+  that will be displayed in the body of the response, default response status is
+  301 (moved permanently), only redirection status are accepted by this
+  function, other values will raise Failure
+</div>
+</td></tr>
+<tr><td><a href="Http_daemon.html#VALrespond_unauthorized">respond_unauthorized</a> [<a href="Http_daemon.html">Http_daemon</a>]</td>
+<td><div class="info">
+respond with a 401 (Unauthorized) response asking for authentication
+ against given realm (default is the server name)
+</div>
+</td></tr>
+<tr><td><a href="Http_daemon.html#VALrespond_with">respond_with</a> [<a href="Http_daemon.html">Http_daemon</a>]</td>
+<td><div class="info">
+respond using a prebuilt Http_types.response object
+</div>
+</td></tr>
+<tr><td align="left"><br>S</td></tr>
+<tr><td><a href="Http_daemon.html#VALsend_CRLF">send_CRLF</a> [<a href="Http_daemon.html">Http_daemon</a>]</td>
+<td><div class="info">
+send a CRLF sequence on the given output channel, this is mandatory after
+  the last header was sent and before start sending the response body
+</div>
+</td></tr>
+<tr><td><a href="Http_daemon.html#VALsend_basic_headers">send_basic_headers</a> [<a href="Http_daemon.html">Http_daemon</a>]</td>
+<td><div class="info">
+like send_status_line but additionally will also send "Date" and "Server"
+  standard headers
+</div>
+</td></tr>
+<tr><td><a href="Http_daemon.html#VALsend_file">send_file</a> [<a href="Http_daemon.html">Http_daemon</a>]</td>
+<td><div class="info">
+send a file through an out_channel
+</div>
+</td></tr>
+<tr><td><a href="Http_daemon.html#VALsend_header">send_header</a> [<a href="Http_daemon.html">Http_daemon</a>]</td>
+<td><div class="info">
+send an HTTP header on outchan
+</div>
+</td></tr>
+<tr><td><a href="Http_daemon.html#VALsend_headers">send_headers</a> [<a href="Http_daemon.html">Http_daemon</a>]</td>
+<td><div class="info">
+as send_header, but for a list of pairs &lt;header, value&gt;
+</div>
+</td></tr>
+<tr><td><a href="Http_daemon.html#VALsend_status_line">send_status_line</a> [<a href="Http_daemon.html">Http_daemon</a>]</td>
+<td><div class="info">
+send response status line, version is the http version used in response,
+  either code or status must be given (not both, not none) which represent the
+  HTTP response code, outchan is the output channel to which send status line
+</div>
+</td></tr>
+<tr><td><a href="Http_threaded_tcp_server.html#VALserve">serve</a> [<a href="Http_threaded_tcp_server.html">Http_threaded_tcp_server</a>]</td>
+<td><div class="info">
+serve an HTTP request for a multi threaded TCP server
+</div>
+</td></tr>
+<tr><td><a href="Http_constants.html#VALserver_string">server_string</a> [<a href="Http_constants.html">Http_constants</a>]</td>
+<td><div class="info">
+string returned as value of "Server:" response header
+</div>
+</td></tr>
+<tr><td><a href="Http_common.html#VALserver_string">server_string</a> [<a href="Http_common.html">Http_common</a>]</td>
+<td><div class="info">
+see <a href="Http_constants.html#VALserver_string"><code class="code">Http_constants.server_string</code></a>
+</div>
+</td></tr>
+<tr><td><a href="Http_tcp_server.html#VALsimple">simple</a> [<a href="Http_tcp_server.html">Http_tcp_server</a>]</td>
+<td><div class="info">
+single process server
+</div>
+</td></tr>
+<tr><td><a href="Http_misc.html#VALsockname_of_in_channel">sockname_of_in_channel</a> [<a href="Http_misc.html">Http_misc</a>]</td>
+<td><div class="info">
+as above but works on in_channels
+</div>
+</td></tr>
+<tr><td><a href="Http_misc.html#VALsockname_of_out_channel">sockname_of_out_channel</a> [<a href="Http_misc.html">Http_misc</a>]</td>
+<td><div class="info">
+given an out_channel build on top of a socket, return sockname related to
+  that socket
+</div>
+</td></tr>
+<tr><td><a href="Http_parser.html#VALsplit_query_params">split_query_params</a> [<a href="Http_parser.html">Http_parser</a>]</td>
+<td><div class="info">
+given an HTTP like query string (e.g.
+</div>
+</td></tr>
+<tr><td><a href="Http_common.html#VALstatus_of_code">status_of_code</a> [<a href="Http_common.html">Http_common</a>]</td>
+<td><div class="info">
+converts an integer HTTP status to the corresponding status value
+</div>
+</td></tr>
+<tr><td><a href="Http_misc.html#VALstring_explode">string_explode</a> [<a href="Http_misc.html">Http_misc</a>]</td>
+<td><div class="info">
+explode a string in a char list
+</div>
+</td></tr>
+<tr><td><a href="Http_misc.html#VALstring_implode">string_implode</a> [<a href="Http_misc.html">Http_misc</a>]</td>
+<td><div class="info">
+implode a char list in a string
+</div>
+</td></tr>
+<tr><td><a href="Http_common.html#VALstring_of_method">string_of_method</a> [<a href="Http_common.html">Http_common</a>]</td>
+<td><div class="info">
+pretty print an HTTP method
+</div>
+</td></tr>
+<tr><td><a href="Http_parser_sanity.html#VALstring_of_url">string_of_url</a> [<a href="Http_parser_sanity.html">Http_parser_sanity</a>]</td>
+<td><div class="info">
+pretty print an URL
+</div>
+</td></tr>
+<tr><td><a href="Http_common.html#VALstring_of_version">string_of_version</a> [<a href="Http_common.html">Http_common</a>]</td>
+<td><div class="info">
+pretty print an HTTP version
+</div>
+</td></tr>
+<tr><td><a href="Http_misc.html#VALstrip_heading_slash">strip_heading_slash</a> [<a href="Http_misc.html">Http_misc</a>]</td>
+<td><div class="info">
+strip heading '/', if any, from a string and
+</div>
+</td></tr>
+<tr><td><a href="Http_misc.html#VALstrip_trailing_slash">strip_trailing_slash</a> [<a href="Http_misc.html">Http_misc</a>]</td>
+<td><div class="info">
+strip trailing '/', if any, from a string and
+</div>
+</td></tr>
+<tr><td align="left"><br>T</td></tr>
+<tr><td><a href="Http_tcp_server.html#VALthread">thread</a> [<a href="Http_tcp_server.html">Http_tcp_server</a>]</td>
+<td><div class="info">
+multi threaded server
+</div>
+</td></tr>
+<tr><td align="left"><br>U</td></tr>
+<tr><td><a href="Http_parser_sanity.html#VALurl_of_string">url_of_string</a> [<a href="Http_parser_sanity.html">Http_parser_sanity</a>]</td>
+<td><div class="info">
+parse an URL from a string.
+</div>
+</td></tr>
+<tr><td align="left"><br>V</td></tr>
+<tr><td><a href="Http_constants.html#VALversion">version</a> [<a href="Http_constants.html">Http_constants</a>]</td>
+<td><div class="info">
+default HTTP version
+</div>
+</td></tr>
+<tr><td><a href="Http_common.html#VALversion_of_string">version_of_string</a> [<a href="Http_common.html">Http_common</a>]</td>
+<td><div class="info">
+parse an HTTP version from a string
+</div>
+</td></tr>
+<tr><td align="left"><br>W</td></tr>
+<tr><td><a href="Http_misc.html#VALwarn">warn</a> [<a href="Http_misc.html">Http_misc</a>]</td>
+<td><div class="info">
+print a warning msg to stderr.
+</div>
+</td></tr>
+</table><br>
+</body>
+</html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/style.css b/hacking/software/ocaml-http/html/style.css
new file mode 100644 (file)
index 0000000..c0a80f3
--- /dev/null
@@ -0,0 +1,33 @@
+a:visited {color : #416DFF; text-decoration : none; }
+a:link {color : #416DFF; text-decoration : none;}
+a:hover {color : Red; text-decoration : none; background-color: #5FFF88}
+a:active {color : Red; text-decoration : underline; }
+.keyword { font-weight : bold ; color : Red }
+.keywordsign { color : #C04600 }
+.superscript { font-size : 4 }
+.subscript { font-size : 4 }
+.comment { color : Green }
+.constructor { color : Blue }
+.type { color : #5C6585 }
+.string { color : Maroon }
+.warning { color : Red ; font-weight : bold }
+.info { margin-left : 3em; margin-right : 3em }
+.param_info { margin-top: 4px; margin-left : 3em; margin-right : 3em }
+.code { color : #465F91 ; }
+h1 { font-size : 20pt ; text-align: center; }
+h2 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #90BDFF ;padding: 2px; }
+h3 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #90DDFF ;padding: 2px; }
+h4 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #90EDFF ;padding: 2px; }
+h5 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #90FDFF ;padding: 2px; }
+h6 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #C0FFFF ; padding: 2px; }
+div.h7 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #E0FFFF ; padding: 2px; }
+div.h8 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #F0FFFF ; padding: 2px; }
+div.h9 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #FFFFFF ; padding: 2px; }
+.typetable { border-style : hidden }
+.indextable { border-style : hidden }
+.paramstable { border-style : hidden ; padding: 5pt 5pt}
+body { background-color : White }
+tr { background-color : White }
+td.typefieldcomment { background-color : #FFFFFF ; font-size: smaller ;}
+pre { margin-bottom: 4px }
+div.sig_block {margin-left: 2em}
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_common.html b/hacking/software/ocaml-http/html/type_Http_common.html
new file mode 100644 (file)
index 0000000..0c4bd9b
--- /dev/null
@@ -0,0 +1,44 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_common</title>
+</head>
+<body>
+<code class="code"><span class="keyword">sig</span><br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;debug&nbsp;:&nbsp;bool&nbsp;<span class="constructor">Pervasives</span>.ref<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;debug_print&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;http_version&nbsp;:&nbsp;<span class="constructor">Http_types</span>.version<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;server_string&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;string_of_version&nbsp;:&nbsp;<span class="constructor">Http_types</span>.version&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;version_of_string&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Http_types</span>.version<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;string_of_method&nbsp;:&nbsp;<span class="constructor">Http_types</span>.meth&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;method_of_string&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Http_types</span>.meth<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;status_of_code&nbsp;:&nbsp;int&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Http_types</span>.status<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;code_of_status&nbsp;:&nbsp;[&lt;&nbsp;<span class="constructor">Http_types</span>.status&nbsp;]&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;int<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;is_informational&nbsp;:&nbsp;int&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;bool<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;is_success&nbsp;:&nbsp;int&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;bool<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;is_redirection&nbsp;:&nbsp;int&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;bool<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;is_client_error&nbsp;:&nbsp;int&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;bool<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;is_server_error&nbsp;:&nbsp;int&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;bool<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;is_error&nbsp;:&nbsp;int&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;bool<br>
+<span class="keyword">end</span></code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_constants.html b/hacking/software/ocaml-http/html/type_Http_constants.html
new file mode 100644 (file)
index 0000000..87ce536
--- /dev/null
@@ -0,0 +1,40 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_constants</title>
+</head>
+<body>
+<code class="code"><span class="keyword">sig</span><br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;version&nbsp;:&nbsp;<span class="constructor">Http_types</span>.version<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;server_string&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;crlf&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;default_addr&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;default_auth&nbsp;:&nbsp;(string&nbsp;*&nbsp;<span class="constructor">Http_types</span>.auth_info)&nbsp;option<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;default_auto_close&nbsp;:&nbsp;bool<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;default_callback&nbsp;:&nbsp;<span class="constructor">Http_types</span>.request&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;default_mode&nbsp;:&nbsp;<span class="constructor">Http_types</span>.daemon_mode<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;default_port&nbsp;:&nbsp;int<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;default_root_dir&nbsp;:&nbsp;string&nbsp;option<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;default_exn_handler&nbsp;:&nbsp;(exn&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit)&nbsp;option<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;default_timeout&nbsp;:&nbsp;int&nbsp;option<br>
+<span class="keyword">end</span></code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_daemon.Trivial.html b/hacking/software/ocaml-http/html/type_Http_daemon.Trivial.html
new file mode 100644 (file)
index 0000000..addd3cb
--- /dev/null
@@ -0,0 +1,30 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_daemon.Trivial</title>
+</head>
+<body>
+<code class="code"><span class="keyword">sig</span><br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;callback&nbsp;:&nbsp;<span class="constructor">Http_types</span>.request&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;main&nbsp;:&nbsp;<span class="constructor">Http_types</span>.daemon_spec&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+<span class="keyword">end</span></code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_daemon.daemon.html b/hacking/software/ocaml-http/html/type_Http_daemon.daemon.html
new file mode 100644 (file)
index 0000000..7bf43e6
--- /dev/null
@@ -0,0 +1,27 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_daemon.daemon</title>
+</head>
+<body>
+<code class="code">?addr:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;?port:int&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Http_types</span>.daemon</code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_daemon.html b/hacking/software/ocaml-http/html/type_Http_daemon.html
new file mode 100644 (file)
index 0000000..5167827
--- /dev/null
@@ -0,0 +1,86 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_daemon</title>
+</head>
+<body>
+<code class="code"><span class="keyword">sig</span><br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;send_CRLF&nbsp;:&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;send_status_line&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;?version:<span class="constructor">Http_types</span>.version&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;code:<span class="constructor">Http_types</span>.status_code&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;send_basic_headers&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;?version:<span class="constructor">Http_types</span>.version&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;code:<span class="constructor">Http_types</span>.status_code&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;send_header&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;header:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;value:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;send_headers&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;headers:(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;send_file&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;src:<span class="constructor">Http_types</span>.file_source&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;respond&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;?body:string&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?headers:(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?version:<span class="constructor">Http_types</span>.version&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?code:<span class="constructor">Http_types</span>.status_code&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;respond_not_found&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;url:string&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?version:<span class="constructor">Http_types</span>.version&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;respond_forbidden&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;url:string&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?version:<span class="constructor">Http_types</span>.version&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;respond_redirect&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;location:string&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?body:string&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?version:<span class="constructor">Http_types</span>.version&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?code:<span class="constructor">Http_types</span>.status_code&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;respond_unauthorized&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;?version:<span class="constructor">Http_types</span>.version&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?realm:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;respond_error&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;?body:string&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?version:<span class="constructor">Http_types</span>.version&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?code:<span class="constructor">Http_types</span>.status_code&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;respond_file&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;fname:string&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?version:<span class="constructor">Http_types</span>.version&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;respond_with&nbsp;:&nbsp;<span class="constructor">Http_types</span>.response&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;main&nbsp;:&nbsp;<span class="constructor">Http_types</span>.daemon_spec&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;default_spec&nbsp;:&nbsp;<span class="constructor">Http_types</span>.daemon_spec<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;daemon_spec&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;?address:string&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?auth:(string&nbsp;*&nbsp;<span class="constructor">Http_types</span>.auth_info)&nbsp;option&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?auto_close:bool&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?callback:(<span class="constructor">Http_types</span>.request&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit)&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?mode:<span class="constructor">Http_types</span>.daemon_mode&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?port:int&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?root_dir:string&nbsp;option&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?exn_handler:(exn&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit)&nbsp;option&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?timeout:int&nbsp;option&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Http_types</span>.daemon_spec<br>
+&nbsp;&nbsp;<span class="keyword">class</span>&nbsp;daemon&nbsp;:&nbsp;?addr:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;?port:int&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Http_types</span>.daemon<br>
+&nbsp;&nbsp;<span class="keyword">module</span>&nbsp;<span class="constructor">Trivial</span>&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">sig</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;callback&nbsp;:&nbsp;<span class="constructor">Http_types</span>.request&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;main&nbsp;:&nbsp;<span class="constructor">Http_types</span>.daemon_spec&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><br>
+<span class="keyword">end</span></code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_message.html b/hacking/software/ocaml-http/html/type_Http_message.html
new file mode 100644 (file)
index 0000000..a9aa1ca
--- /dev/null
@@ -0,0 +1,61 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_message</title>
+</head>
+<body>
+<code class="code"><span class="keyword">sig</span><br>
+&nbsp;&nbsp;<span class="keyword">class</span>&nbsp;<span class="keyword">virtual</span>&nbsp;message&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;body:string&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;headers:(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;version:<span class="constructor">Http_types</span>.version&nbsp;option&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;clisockaddr:<span class="constructor">Unix</span>.sockaddr&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;srvsockaddr:<span class="constructor">Unix</span>.sockaddr&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">object</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addBody&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addBodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;value:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addHeaders&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;body&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;bodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientAddr&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientPort&nbsp;:&nbsp;int<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientSockaddr&nbsp;:&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;<span class="keyword">private</span>&nbsp;<span class="keyword">virtual</span>&nbsp;fstLineToString&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;hasHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;bool<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;header&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;headers&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;removeHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;replaceHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;value:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;replaceHeaders&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serialize&nbsp;:&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverAddr&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverPort&nbsp;:&nbsp;int<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverSockaddr&nbsp;:&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setBody&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setBodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setVersion&nbsp;:&nbsp;<span class="constructor">Http_types</span>.version&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;toString&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;version&nbsp;:&nbsp;<span class="constructor">Http_types</span>.version&nbsp;option<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><br>
+<span class="keyword">end</span></code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_message.message.html b/hacking/software/ocaml-http/html/type_Http_message.message.html
new file mode 100644 (file)
index 0000000..ec13674
--- /dev/null
@@ -0,0 +1,58 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_message.message</title>
+</head>
+<body>
+<code class="code">body:string&nbsp;<span class="keywordsign">-&gt;</span><br>
+headers:(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span><br>
+version:<span class="constructor">Http_types</span>.version&nbsp;option&nbsp;<span class="keywordsign">-&gt;</span><br>
+clisockaddr:<span class="constructor">Unix</span>.sockaddr&nbsp;<span class="keywordsign">-&gt;</span><br>
+srvsockaddr:<span class="constructor">Unix</span>.sockaddr&nbsp;<span class="keywordsign">-&gt;</span><br>
+<span class="keyword">object</span><br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addBody&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addBodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;value:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addHeaders&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;body&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;bodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientAddr&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientPort&nbsp;:&nbsp;int<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientSockaddr&nbsp;:&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;<span class="keyword">private</span>&nbsp;<span class="keyword">virtual</span>&nbsp;fstLineToString&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;hasHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;bool<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;header&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;headers&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;removeHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;replaceHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;value:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;replaceHeaders&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serialize&nbsp;:&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverAddr&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverPort&nbsp;:&nbsp;int<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverSockaddr&nbsp;:&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setBody&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setBodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setVersion&nbsp;:&nbsp;<span class="constructor">Http_types</span>.version&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;toString&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;version&nbsp;:&nbsp;<span class="constructor">Http_types</span>.version&nbsp;option<br>
+<span class="keyword">end</span></code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_misc.html b/hacking/software/ocaml-http/html/type_Http_misc.html
new file mode 100644 (file)
index 0000000..0ef8261
--- /dev/null
@@ -0,0 +1,48 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_misc</title>
+</head>
+<body>
+<code class="code"><span class="keyword">sig</span><br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;date_822&nbsp;:&nbsp;unit&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;is_directory&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;bool<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;filesize&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;int<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;strip_trailing_slash&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;strip_heading_slash&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;ls&nbsp;:&nbsp;<span class="constructor">Unix</span>.dir_handle&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string&nbsp;list<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;string_explode&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;char&nbsp;list<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;string_implode&nbsp;:&nbsp;char&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;reason_phrase_of_code&nbsp;:&nbsp;int&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;build_sockaddr&nbsp;:&nbsp;string&nbsp;*&nbsp;int&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;explode_sockaddr&nbsp;:&nbsp;<span class="constructor">Unix</span>.sockaddr&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string&nbsp;*&nbsp;int<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;peername_of_out_channel&nbsp;:&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;peername_of_in_channel&nbsp;:&nbsp;<span class="constructor">Pervasives</span>.in_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;sockname_of_out_channel&nbsp;:&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;sockname_of_in_channel&nbsp;:&nbsp;<span class="constructor">Pervasives</span>.in_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;buf_of_inchan&nbsp;:&nbsp;?limit:int&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.in_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Buffer</span>.t<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;list_assoc_all&nbsp;:&nbsp;<span class="keywordsign">'</span>a&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;(<span class="keywordsign">'</span>a&nbsp;*&nbsp;<span class="keywordsign">'</span>b)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="keywordsign">'</span>b&nbsp;list<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;warn&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;error&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;finally&nbsp;:&nbsp;(unit&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit)&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;(<span class="keywordsign">'</span>a&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="keywordsign">'</span>b)&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="keywordsign">'</span>a&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="keywordsign">'</span>b<br>
+<span class="keyword">end</span></code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_parser.html b/hacking/software/ocaml-http/html/type_Http_parser.html
new file mode 100644 (file)
index 0000000..54e4c66
--- /dev/null
@@ -0,0 +1,39 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_parser</title>
+</head>
+<body>
+<code class="code"><span class="keyword">sig</span><br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;split_query_params&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;parse_request_fst_line&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="constructor">Pervasives</span>.in_channel&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="constructor">Http_types</span>.meth&nbsp;*&nbsp;<span class="constructor">Neturl</span>.url&nbsp;*&nbsp;<span class="constructor">Http_types</span>.version&nbsp;option<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;parse_response_fst_line&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="constructor">Pervasives</span>.in_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Http_types</span>.version&nbsp;*&nbsp;<span class="constructor">Http_types</span>.status<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;parse_query_get_params&nbsp;:&nbsp;<span class="constructor">Neturl</span>.url&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;parse_path&nbsp;:&nbsp;<span class="constructor">Neturl</span>.url&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;parse_headers&nbsp;:&nbsp;<span class="constructor">Pervasives</span>.in_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;parse_request&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="constructor">Pervasives</span>.in_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string&nbsp;*&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list<br>
+<span class="keyword">end</span></code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_parser_sanity.html b/hacking/software/ocaml-http/html/type_Http_parser_sanity.html
new file mode 100644 (file)
index 0000000..16bc3ef
--- /dev/null
@@ -0,0 +1,34 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_parser_sanity</title>
+</head>
+<body>
+<code class="code"><span class="keyword">sig</span><br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;heal_header_name&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;heal_header_value&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;heal_header&nbsp;:&nbsp;string&nbsp;*&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;normalize_header_value&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;url_of_string&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Neturl</span>.url<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;string_of_url&nbsp;:&nbsp;<span class="constructor">Neturl</span>.url&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+<span class="keyword">end</span></code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_request.html b/hacking/software/ocaml-http/html/type_Http_request.html
new file mode 100644 (file)
index 0000000..2598428
--- /dev/null
@@ -0,0 +1,27 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_request</title>
+</head>
+<body>
+<code class="code"><span class="keyword">sig</span>&nbsp;<span class="keyword">class</span>&nbsp;request&nbsp;:&nbsp;<span class="constructor">Pervasives</span>.in_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Http_types</span>.request&nbsp;<span class="keyword">end</span></code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_request.request.html b/hacking/software/ocaml-http/html/type_Http_request.request.html
new file mode 100644 (file)
index 0000000..99355ce
--- /dev/null
@@ -0,0 +1,27 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_request.request</title>
+</head>
+<body>
+<code class="code"><span class="constructor">Pervasives</span>.in_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Http_types</span>.request</code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_response.html b/hacking/software/ocaml-http/html/type_Http_response.html
new file mode 100644 (file)
index 0000000..2881c33
--- /dev/null
@@ -0,0 +1,35 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_response</title>
+</head>
+<body>
+<code class="code"><span class="keyword">sig</span><br>
+&nbsp;&nbsp;<span class="keyword">class</span>&nbsp;response&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;?body:string&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?headers:(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?version:<span class="constructor">Http_types</span>.version&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?clisockaddr:<span class="constructor">Unix</span>.sockaddr&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?srvsockaddr:<span class="constructor">Unix</span>.sockaddr&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;?code:int&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;?status:<span class="constructor">Http_types</span>.status&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Http_types</span>.response<br>
+<span class="keyword">end</span></code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_response.response.html b/hacking/software/ocaml-http/html/type_Http_response.response.html
new file mode 100644 (file)
index 0000000..8407498
--- /dev/null
@@ -0,0 +1,32 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_response.response</title>
+</head>
+<body>
+<code class="code">?body:string&nbsp;<span class="keywordsign">-&gt;</span><br>
+?headers:(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span><br>
+?version:<span class="constructor">Http_types</span>.version&nbsp;<span class="keywordsign">-&gt;</span><br>
+?clisockaddr:<span class="constructor">Unix</span>.sockaddr&nbsp;<span class="keywordsign">-&gt;</span><br>
+?srvsockaddr:<span class="constructor">Unix</span>.sockaddr&nbsp;<span class="keywordsign">-&gt;</span><br>
+?code:int&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;?status:<span class="constructor">Http_types</span>.status&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Http_types</span>.response</code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_tcp_server.html b/hacking/software/ocaml-http/html/type_Http_tcp_server.html
new file mode 100644 (file)
index 0000000..f2fb240
--- /dev/null
@@ -0,0 +1,32 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_tcp_server</title>
+</head>
+<body>
+<code class="code"><span class="keyword">sig</span><br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;simple&nbsp;:&nbsp;<span class="constructor">Http_types</span>.tcp_server<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;thread&nbsp;:&nbsp;<span class="constructor">Http_types</span>.tcp_server<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;fork&nbsp;:&nbsp;<span class="constructor">Http_types</span>.tcp_server<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;init_socket&nbsp;:&nbsp;<span class="constructor">Unix</span>.sockaddr&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Unix</span>.file_descr<br>
+<span class="keyword">end</span></code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_threaded_tcp_server.html b/hacking/software/ocaml-http/html/type_Http_threaded_tcp_server.html
new file mode 100644 (file)
index 0000000..b928951
--- /dev/null
@@ -0,0 +1,27 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_threaded_tcp_server</title>
+</head>
+<body>
+<code class="code"><span class="keyword">sig</span>&nbsp;<span class="keyword">val</span>&nbsp;serve&nbsp;:&nbsp;(<span class="keywordsign">'</span>a&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="keywordsign">'</span>b)&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="keywordsign">'</span>a&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit&nbsp;<span class="keyword">end</span></code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_types.connection.html b/hacking/software/ocaml-http/html/type_Http_types.connection.html
new file mode 100644 (file)
index 0000000..c4562fa
--- /dev/null
@@ -0,0 +1,31 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_types.connection</title>
+</head>
+<body>
+<code class="code"><span class="keyword">object</span><br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;close&nbsp;:&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;getRequest&nbsp;:&nbsp;<span class="constructor">Http_types</span>.request&nbsp;option<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;respond_with&nbsp;:&nbsp;<span class="constructor">Http_types</span>.response&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+<span class="keyword">end</span></code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_types.daemon.html b/hacking/software/ocaml-http/html/type_Http_types.daemon.html
new file mode 100644 (file)
index 0000000..8ec13cc
--- /dev/null
@@ -0,0 +1,30 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_types.daemon</title>
+</head>
+<body>
+<code class="code"><span class="keyword">object</span><br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;accept&nbsp;:&nbsp;<span class="constructor">Http_types</span>.connection<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;getRequest&nbsp;:&nbsp;<span class="constructor">Http_types</span>.request&nbsp;*&nbsp;<span class="constructor">Http_types</span>.connection<br>
+<span class="keyword">end</span></code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_types.html b/hacking/software/ocaml-http/html/type_Http_types.html
new file mode 100644 (file)
index 0000000..7088e23
--- /dev/null
@@ -0,0 +1,254 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_types</title>
+</head>
+<body>
+<code class="code"><span class="keyword">sig</span><br>
+&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;version&nbsp;=&nbsp;[&nbsp;<span class="keywordsign">`</span><span class="constructor">HTTP_1_0</span>&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">HTTP_1_1</span>&nbsp;]<br>
+&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;meth&nbsp;=&nbsp;[&nbsp;<span class="keywordsign">`</span><span class="constructor">GET</span>&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">POST</span>&nbsp;]<br>
+&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;daemon_mode&nbsp;=&nbsp;[&nbsp;<span class="keywordsign">`</span><span class="constructor">Fork</span>&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Single</span>&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Thread</span>&nbsp;]<br>
+&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;tcp_server&nbsp;=<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sockaddr:<span class="constructor">Unix</span>.sockaddr&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeout:int&nbsp;option&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<span class="constructor">Pervasives</span>.in_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit)&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;auth_info&nbsp;=&nbsp;[&nbsp;<span class="keywordsign">`</span><span class="constructor">Basic</span>&nbsp;<span class="keyword">of</span>&nbsp;string&nbsp;*&nbsp;string&nbsp;]<br>
+&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;informational_substatus&nbsp;=&nbsp;[&nbsp;<span class="keywordsign">`</span><span class="constructor">Continue</span>&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Switching_protocols</span>&nbsp;]<br>
+&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;success_substatus&nbsp;=<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;<span class="keywordsign">`</span><span class="constructor">Accepted</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Created</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">No_content</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Non_authoritative_information</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">OK</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Partial_content</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Reset_content</span>&nbsp;]<br>
+&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;redirection_substatus&nbsp;=<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;<span class="keywordsign">`</span><span class="constructor">Found</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Moved_permanently</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Multiple_choices</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Not_modified</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">See_other</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Temporary_redirect</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Use_proxy</span>&nbsp;]<br>
+&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;client_error_substatus&nbsp;=<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;<span class="keywordsign">`</span><span class="constructor">Bad_request</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Conflict</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Expectation_failed</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Forbidden</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Gone</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Length_required</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Method_not_allowed</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Not_acceptable</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Not_found</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Payment_required</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Precondition_failed</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Proxy_authentication_required</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Request_URI_too_large</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Request_entity_too_large</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Request_time_out</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Requested_range_not_satisfiable</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Unauthorized</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Unsupported_media_type</span>&nbsp;]<br>
+&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;server_error_substatus&nbsp;=<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;<span class="keywordsign">`</span><span class="constructor">Bad_gateway</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Gateway_time_out</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">HTTP_version_not_supported</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Internal_server_error</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Not_implemented</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Service_unavailable</span>&nbsp;]<br>
+&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;informational_status&nbsp;=<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;<span class="keywordsign">`</span><span class="constructor">Informational</span>&nbsp;<span class="keyword">of</span>&nbsp;<span class="constructor">Http_types</span>.informational_substatus&nbsp;]<br>
+&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;success_status&nbsp;=&nbsp;[&nbsp;<span class="keywordsign">`</span><span class="constructor">Success</span>&nbsp;<span class="keyword">of</span>&nbsp;<span class="constructor">Http_types</span>.success_substatus&nbsp;]<br>
+&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;redirection_status&nbsp;=<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;<span class="keywordsign">`</span><span class="constructor">Redirection</span>&nbsp;<span class="keyword">of</span>&nbsp;<span class="constructor">Http_types</span>.redirection_substatus&nbsp;]<br>
+&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;client_error_status&nbsp;=<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;<span class="keywordsign">`</span><span class="constructor">Client_error</span>&nbsp;<span class="keyword">of</span>&nbsp;<span class="constructor">Http_types</span>.client_error_substatus&nbsp;]<br>
+&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;server_error_status&nbsp;=<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;<span class="keywordsign">`</span><span class="constructor">Server_error</span>&nbsp;<span class="keyword">of</span>&nbsp;<span class="constructor">Http_types</span>.server_error_substatus&nbsp;]<br>
+&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;error_status&nbsp;=<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;<span class="keywordsign">`</span><span class="constructor">Client_error</span>&nbsp;<span class="keyword">of</span>&nbsp;<span class="constructor">Http_types</span>.client_error_substatus<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Server_error</span>&nbsp;<span class="keyword">of</span>&nbsp;<span class="constructor">Http_types</span>.server_error_substatus&nbsp;]<br>
+&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;status&nbsp;=<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;<span class="keywordsign">`</span><span class="constructor">Client_error</span>&nbsp;<span class="keyword">of</span>&nbsp;<span class="constructor">Http_types</span>.client_error_substatus<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Informational</span>&nbsp;<span class="keyword">of</span>&nbsp;<span class="constructor">Http_types</span>.informational_substatus<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Redirection</span>&nbsp;<span class="keyword">of</span>&nbsp;<span class="constructor">Http_types</span>.redirection_substatus<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Server_error</span>&nbsp;<span class="keyword">of</span>&nbsp;<span class="constructor">Http_types</span>.server_error_substatus<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Success</span>&nbsp;<span class="keyword">of</span>&nbsp;<span class="constructor">Http_types</span>.success_substatus&nbsp;]<br>
+&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;status_code&nbsp;=&nbsp;[&nbsp;<span class="keywordsign">`</span><span class="constructor">Code</span>&nbsp;<span class="keyword">of</span>&nbsp;int&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="keywordsign">`</span><span class="constructor">Status</span>&nbsp;<span class="keyword">of</span>&nbsp;<span class="constructor">Http_types</span>.status&nbsp;]<br>
+&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;file_source&nbsp;=&nbsp;<span class="constructor">FileSrc</span>&nbsp;<span class="keyword">of</span>&nbsp;string&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="constructor">InChanSrc</span>&nbsp;<span class="keyword">of</span>&nbsp;<span class="constructor">Pervasives</span>.in_channel<br>
+&nbsp;&nbsp;<span class="keyword">exception</span>&nbsp;<span class="constructor">Invalid_header</span>&nbsp;<span class="keyword">of</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">exception</span>&nbsp;<span class="constructor">Invalid_header_name</span>&nbsp;<span class="keyword">of</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">exception</span>&nbsp;<span class="constructor">Invalid_header_value</span>&nbsp;<span class="keyword">of</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">exception</span>&nbsp;<span class="constructor">Invalid_HTTP_version</span>&nbsp;<span class="keyword">of</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">exception</span>&nbsp;<span class="constructor">Invalid_HTTP_method</span>&nbsp;<span class="keyword">of</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">exception</span>&nbsp;<span class="constructor">Invalid_code</span>&nbsp;<span class="keyword">of</span>&nbsp;int<br>
+&nbsp;&nbsp;<span class="keyword">exception</span>&nbsp;<span class="constructor">Malformed_URL</span>&nbsp;<span class="keyword">of</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">exception</span>&nbsp;<span class="constructor">Malformed_query</span>&nbsp;<span class="keyword">of</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">exception</span>&nbsp;<span class="constructor">Malformed_query_part</span>&nbsp;<span class="keyword">of</span>&nbsp;string&nbsp;*&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">exception</span>&nbsp;<span class="constructor">Malformed_request_URI</span>&nbsp;<span class="keyword">of</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">exception</span>&nbsp;<span class="constructor">Malformed_request</span>&nbsp;<span class="keyword">of</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">exception</span>&nbsp;<span class="constructor">Malformed_response</span>&nbsp;<span class="keyword">of</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">exception</span>&nbsp;<span class="constructor">Param_not_found</span>&nbsp;<span class="keyword">of</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">exception</span>&nbsp;<span class="constructor">Invalid_status_line</span>&nbsp;<span class="keyword">of</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">exception</span>&nbsp;<span class="constructor">Header_not_found</span>&nbsp;<span class="keyword">of</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">exception</span>&nbsp;<span class="constructor">Quit</span><br>
+&nbsp;&nbsp;<span class="keyword">exception</span>&nbsp;<span class="constructor">Unauthorized</span>&nbsp;<span class="keyword">of</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">class</span>&nbsp;<span class="keyword">type</span>&nbsp;message&nbsp;=<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">object</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addBody&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addBodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;value:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addHeaders&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;body&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;bodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientAddr&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientPort&nbsp;:&nbsp;int<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientSockaddr&nbsp;:&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;hasHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;bool<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;header&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;headers&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;removeHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;replaceHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;value:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;replaceHeaders&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serialize&nbsp;:&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverAddr&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverPort&nbsp;:&nbsp;int<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverSockaddr&nbsp;:&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setBody&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setBodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setVersion&nbsp;:&nbsp;<span class="constructor">Http_types</span>.version&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;toString&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;version&nbsp;:&nbsp;<span class="constructor">Http_types</span>.version&nbsp;option<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><br>
+&nbsp;&nbsp;<span class="keyword">class</span>&nbsp;<span class="keyword">type</span>&nbsp;request&nbsp;=<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">object</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addBody&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addBodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;value:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addHeaders&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;authorization&nbsp;:&nbsp;<span class="constructor">Http_types</span>.auth_info&nbsp;option<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;body&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;bodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientAddr&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientPort&nbsp;:&nbsp;int<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientSockaddr&nbsp;:&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;hasHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;bool<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;header&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;headers&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;meth&nbsp;:&nbsp;<span class="constructor">Http_types</span>.meth<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;param&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;?meth:<span class="constructor">Http_types</span>.meth&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;?default:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;paramAll&nbsp;:&nbsp;?meth:<span class="constructor">Http_types</span>.meth&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string&nbsp;list<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;params&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;params_GET&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;params_POST&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;path&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;removeHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;replaceHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;value:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;replaceHeaders&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serialize&nbsp;:&nbsp;out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverAddr&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverPort&nbsp;:&nbsp;int<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverSockaddr&nbsp;:&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setBody&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setBodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setVersion&nbsp;:&nbsp;version&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;toString&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;uri&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;version&nbsp;:&nbsp;version&nbsp;option<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><br>
+&nbsp;&nbsp;<span class="keyword">class</span>&nbsp;<span class="keyword">type</span>&nbsp;response&nbsp;=<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">object</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addBasicHeaders&nbsp;:&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addBody&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addBodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;value:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addHeaders&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;body&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;bodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientAddr&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientPort&nbsp;:&nbsp;int<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientSockaddr&nbsp;:&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;code&nbsp;:&nbsp;int<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;contentEncoding&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;contentType&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;date&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;expires&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;hasHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;bool<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;header&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;headers&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;isClientError&nbsp;:&nbsp;bool<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;isError&nbsp;:&nbsp;bool<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;isInformational&nbsp;:&nbsp;bool<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;isRedirection&nbsp;:&nbsp;bool<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;isServerError&nbsp;:&nbsp;bool<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;isSuccess&nbsp;:&nbsp;bool<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;reason&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;removeHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;replaceHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;value:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;replaceHeaders&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serialize&nbsp;:&nbsp;out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;server&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverAddr&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverPort&nbsp;:&nbsp;int<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverSockaddr&nbsp;:&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setBody&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setBodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setCode&nbsp;:&nbsp;int&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setContentEncoding&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setContentType&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setDate&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setExpires&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setReason&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setServer&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setStatus&nbsp;:&nbsp;<span class="constructor">Http_types</span>.status&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setStatusLine&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setVersion&nbsp;:&nbsp;version&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;status&nbsp;:&nbsp;<span class="constructor">Http_types</span>.status<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;statusLine&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;toString&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;version&nbsp;:&nbsp;version&nbsp;option<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><br>
+&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;daemon_spec&nbsp;=&nbsp;{<br>
+&nbsp;&nbsp;&nbsp;&nbsp;address&nbsp;:&nbsp;string;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;auth&nbsp;:&nbsp;(string&nbsp;*&nbsp;<span class="constructor">Http_types</span>.auth_info)&nbsp;option;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;callback&nbsp;:&nbsp;<span class="constructor">Http_types</span>.request&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;mode&nbsp;:&nbsp;<span class="constructor">Http_types</span>.daemon_mode;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;port&nbsp;:&nbsp;int;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;root_dir&nbsp;:&nbsp;string&nbsp;option;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;exn_handler&nbsp;:&nbsp;(exn&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit)&nbsp;option;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;timeout&nbsp;:&nbsp;int&nbsp;option;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;auto_close&nbsp;:&nbsp;bool;<br>
+&nbsp;&nbsp;}<br>
+&nbsp;&nbsp;<span class="keyword">class</span>&nbsp;<span class="keyword">type</span>&nbsp;connection&nbsp;=<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">object</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;close&nbsp;:&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;getRequest&nbsp;:&nbsp;<span class="constructor">Http_types</span>.request&nbsp;option<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;respond_with&nbsp;:&nbsp;<span class="constructor">Http_types</span>.response&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><br>
+&nbsp;&nbsp;<span class="keyword">class</span>&nbsp;<span class="keyword">type</span>&nbsp;daemon&nbsp;=<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">object</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;accept&nbsp;:&nbsp;<span class="constructor">Http_types</span>.connection<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;getRequest&nbsp;:&nbsp;<span class="constructor">Http_types</span>.request&nbsp;*&nbsp;<span class="constructor">Http_types</span>.connection<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><br>
+<span class="keyword">end</span></code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_types.message.html b/hacking/software/ocaml-http/html/type_Http_types.message.html
new file mode 100644 (file)
index 0000000..b3bf824
--- /dev/null
@@ -0,0 +1,52 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_types.message</title>
+</head>
+<body>
+<code class="code"><span class="keyword">object</span><br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addBody&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addBodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;value:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addHeaders&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;body&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;bodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientAddr&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientPort&nbsp;:&nbsp;int<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientSockaddr&nbsp;:&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;hasHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;bool<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;header&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;headers&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;removeHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;replaceHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;value:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;replaceHeaders&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serialize&nbsp;:&nbsp;<span class="constructor">Pervasives</span>.out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverAddr&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverPort&nbsp;:&nbsp;int<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverSockaddr&nbsp;:&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setBody&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setBodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setVersion&nbsp;:&nbsp;<span class="constructor">Http_types</span>.version&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;toString&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;version&nbsp;:&nbsp;<span class="constructor">Http_types</span>.version&nbsp;option<br>
+<span class="keyword">end</span></code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_types.request.html b/hacking/software/ocaml-http/html/type_Http_types.request.html
new file mode 100644 (file)
index 0000000..e8b97a5
--- /dev/null
@@ -0,0 +1,61 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_types.request</title>
+</head>
+<body>
+<code class="code"><span class="keyword">object</span><br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addBody&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addBodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;value:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addHeaders&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;authorization&nbsp;:&nbsp;<span class="constructor">Http_types</span>.auth_info&nbsp;option<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;body&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;bodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientAddr&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientPort&nbsp;:&nbsp;int<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientSockaddr&nbsp;:&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;hasHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;bool<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;header&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;headers&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;meth&nbsp;:&nbsp;<span class="constructor">Http_types</span>.meth<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;param&nbsp;:&nbsp;?meth:<span class="constructor">Http_types</span>.meth&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;?default:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;paramAll&nbsp;:&nbsp;?meth:<span class="constructor">Http_types</span>.meth&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string&nbsp;list<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;params&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;params_GET&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;params_POST&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;path&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;removeHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;replaceHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;value:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;replaceHeaders&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serialize&nbsp;:&nbsp;out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverAddr&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverPort&nbsp;:&nbsp;int<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverSockaddr&nbsp;:&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setBody&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setBodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setVersion&nbsp;:&nbsp;version&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;toString&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;uri&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;version&nbsp;:&nbsp;version&nbsp;option<br>
+<span class="keyword">end</span></code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_types.response.html b/hacking/software/ocaml-http/html/type_Http_types.response.html
new file mode 100644 (file)
index 0000000..391fec8
--- /dev/null
@@ -0,0 +1,77 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_types.response</title>
+</head>
+<body>
+<code class="code"><span class="keyword">object</span><br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addBasicHeaders&nbsp;:&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addBody&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addBodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;value:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;addHeaders&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;body&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;bodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientAddr&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientPort&nbsp;:&nbsp;int<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;clientSockaddr&nbsp;:&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;code&nbsp;:&nbsp;int<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;contentEncoding&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;contentType&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;date&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;expires&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;hasHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;bool<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;header&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;headers&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;isClientError&nbsp;:&nbsp;bool<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;isError&nbsp;:&nbsp;bool<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;isInformational&nbsp;:&nbsp;bool<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;isRedirection&nbsp;:&nbsp;bool<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;isServerError&nbsp;:&nbsp;bool<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;isSuccess&nbsp;:&nbsp;bool<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;reason&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;removeHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;replaceHeader&nbsp;:&nbsp;name:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;value:string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;replaceHeaders&nbsp;:&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serialize&nbsp;:&nbsp;out_channel&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;server&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverAddr&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverPort&nbsp;:&nbsp;int<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;serverSockaddr&nbsp;:&nbsp;<span class="constructor">Unix</span>.sockaddr<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setBody&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setBodyBuf&nbsp;:&nbsp;<span class="constructor">Buffer</span>.t&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setCode&nbsp;:&nbsp;int&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setContentEncoding&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setContentType&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setDate&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setExpires&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setReason&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setServer&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setStatus&nbsp;:&nbsp;<span class="constructor">Http_types</span>.status&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setStatusLine&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;setVersion&nbsp;:&nbsp;version&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;status&nbsp;:&nbsp;<span class="constructor">Http_types</span>.status<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;statusLine&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;toString&nbsp;:&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">method</span>&nbsp;version&nbsp;:&nbsp;version&nbsp;option<br>
+<span class="keyword">end</span></code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/html/type_Http_user_agent.html b/hacking/software/ocaml-http/html/type_Http_user_agent.html
new file mode 100644 (file)
index 0000000..cee39aa
--- /dev/null
@@ -0,0 +1,36 @@
+<html><head>
+<link rel="stylesheet" href="style.css" type="text/css">
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<link rel="Start" href="index.html">
+<link title="Index of types" rel=Appendix href="index_types.html">
+<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
+<link title="Index of values" rel=Appendix href="index_values.html">
+<link title="Index of class methods" rel=Appendix href="index_methods.html">
+<link title="Index of classes" rel=Appendix href="index_classes.html">
+<link title="Index of class types" rel=Appendix href="index_class_types.html">
+<link title="Index of modules" rel=Appendix href="index_modules.html">
+<link title="Http_common" rel="Chapter" href="Http_common.html">
+<link title="Http_constants" rel="Chapter" href="Http_constants.html">
+<link title="Http_daemon" rel="Chapter" href="Http_daemon.html">
+<link title="Http_message" rel="Chapter" href="Http_message.html">
+<link title="Http_misc" rel="Chapter" href="Http_misc.html">
+<link title="Http_parser" rel="Chapter" href="Http_parser.html">
+<link title="Http_parser_sanity" rel="Chapter" href="Http_parser_sanity.html">
+<link title="Http_request" rel="Chapter" href="Http_request.html">
+<link title="Http_response" rel="Chapter" href="Http_response.html">
+<link title="Http_tcp_server" rel="Chapter" href="Http_tcp_server.html">
+<link title="Http_threaded_tcp_server" rel="Chapter" href="Http_threaded_tcp_server.html">
+<link title="Http_types" rel="Chapter" href="Http_types.html">
+<link title="Http_user_agent" rel="Chapter" href="Http_user_agent.html"><title>Http_user_agent</title>
+</head>
+<body>
+<code class="code"><span class="keyword">sig</span><br>
+&nbsp;&nbsp;<span class="keyword">exception</span>&nbsp;<span class="constructor">Http_error</span>&nbsp;<span class="keyword">of</span>&nbsp;(int&nbsp;*&nbsp;string)<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;get&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;?head_callback:(<span class="constructor">Http_types</span>.status&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit)&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;get_iter&nbsp;:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;?head_callback:(<span class="constructor">Http_types</span>.status&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;(string&nbsp;*&nbsp;string)&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit)&nbsp;<span class="keywordsign">-&gt;</span><br>
+&nbsp;&nbsp;&nbsp;&nbsp;(string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit)&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;unit<br>
+&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;head&nbsp;:&nbsp;string&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;string<br>
+<span class="keyword">end</span></code></body></html>
\ No newline at end of file
diff --git a/hacking/software/ocaml-http/ocaml-http-0.1.3.tar.gz b/hacking/software/ocaml-http/ocaml-http-0.1.3.tar.gz
new file mode 100644 (file)
index 0000000..4333d6e
Binary files /dev/null and b/hacking/software/ocaml-http/ocaml-http-0.1.3.tar.gz differ