[Sep 13 2009]

 * ADDED: Process HTTP DELETE, OPTIONS and TRACE methods.  Torbjörn Lager.

[Aug 27 2009]

 * FIXED: JSON Mimetype handling.  Matt Lilley.

[Aug 25 2009]

 * ENHANCED: Made the detection of JSON more flexible.

 * ENHANCED: JSON indentation handling.  Matt Lilley.

[Aug 21 2009]

 * ENHANCED: Bug#414: Get rid of pool/4 in HTTP request structures.
   Lourens van der Meij.

[Aug 18 2009]

 * CLEANUP: Bug#413: Complete 'make distclean'.  Feliks Kluzniak

[Aug 16 2009]

 * DOC: Provide documentation of http_dispatch.pl through PlDoc

 * ADDED: http_redirect/3 to simplify writing redirect handlers and enhance the reflexive capabilities of the HTTP server.

[Aug 14 2009]

 * ADDED: Allow grouping of HTTP parameters

 * ADDED: Support disjunctive types in HTTP parameter handling

 * CLEANUP: Use meta_predicate for json_convert.pl

[Aug 13 2009]

 * ADDED: type nonneg to http_parameters/3.

 * ADDED: PlDoc wiki to handle references as module:name/arity.

 * ADDED: Allow hooking http_parameters type checking and conversion.

 * ADDED: &(Int) is written as &#Int; in html_write.  Clarified the documentation.

 * ADDED: Types list(Type), boolean and atom to http_parameters/3.

[Aug 12 2009]

 * ENHANCED: Better handing of \[...] in cross-referencer

[Aug 10 2009]

 * FIXED: Properly deal with external resources

 * FIXED: Module-handling of body//1 and head//1 hooks in html_write.pl

 * FIXED: Actually handle timout of the threaded HTTP deamon.  The connection is now dropped after 60 seconds inactivity of the client.

 * FIXED: HTTP server DoS if the clients sends an empty Cookie header.

[Jul 21 2009]

 * MODIFIED: Make initialization/1 ISO compliant
   This patch is a modest cleanup to the implementation of '$load_file'/3
   from init.pl and provides an ISO compatible implementation of
   initialization/1. This executes the argument goal *after* loading the
   file rather than when encountering the directive. Often this makes no
   difference, but notably load_foreign_library/1 is an exception.
   Therefore we added use_foreign_library/1,2 that act as a directive and
   provides proper integration with saved-states automatically.  Loading
   code using initialization(load_foreign_library(...)) will load the
   library immediately and issue a warning.

   See initialization/1,2 for details and further hints for dealing with
   possible compatibility problems.
[Jul 1 2009]

 * ADDED: Allow \-escape inside html(\List).

 * ADDED: Return the fact that a handler is a prefix handler in http_current_handler/3.

 * ADDED: Allow for http_handler(root(find/concept), ...).  I.e., allow for component/component without quotes,

[Jun 29 2009]

 * FIXED: http_currect_session(-, ?) did not generate (all) sessions.

 * ADDED: http_close_session/1

[Jun 23 2009]

 * MODIFIED: Added option unsafe(Bool) to http_reply_file/3.  This option is by default false, which causes this predicate to refuse serving files with an absolute path, a path outside the working directory or, if an alias(Path) is used, outside the root of the alias.
   If you want to serve such files, you must provide unsafe(true) explicitely.

 * ADDED: Reply with 400 Bad Request on illegal HTTP requests

[Mar 19 2009]

 * CLEANUP: Removed all trailing whitespace from all source-files.  This avoids many GIT (merge) warnings.
[Mar 12 2009]

 * FIXED: Avoid race condition in session management.  Jacco van Ossenbruggen.

 * MODIFIED: Renamed concat_atom/2,3 into atomic_list_concat/2,3 for compatibility.  Moved the old predicates into library(backcomp).  It is adviced to update your code, but 99% of the code will remain working because the old definitions are autoloaded.

[Feb 27 2009]

 * FIXED: http_current_server/2 was broken with meta_predicate introduction.

[Feb 25 2009]

 * ENHANCED: Use a cache for http_in_session/1 to avoid repetitive access to the CGI stream object.

 * FIXED: make http_current_request/1 semidet again.  Added is_cgi_stream/1 for testing whether we are in a CGI context without raising an error.

[Feb 23 2009]

 * ENHANCED: Allow the start broadcast-message of the HTTP server to throw an exception.  This allows for defining additional policy-handlers as broadcast plugins.

[Feb 20 2009]

 * ADDED: Use nlink property of stream to close the logfile

[Feb 15 2009]

 * FIXED: Proper reply on partial content (use 206 reply; fix length computation)

[Feb 3 2009]

 * ADDED: HTTP server support for byte-ranges of files.

 * ADDED: Parsing of HTTP Range field into a structured term

[Jan 30 2009]

 * ENHANCED: HTTP error handler in formulating replies from a file.

[Jan 29 2009]

 * CLEANUP: be careful, but to not crash on unexpected event on CGI streams.

[Jan 28 2009]

 * ADDED: When matching a prefix-path in http_dispatch, makethe remainder
   of the path available through path_info(PathInfo) in the request.

[Jan 22 2009]

 * ADDED: http_in_session/1 to find the current session but do not raise an
   exception if it doesn't exist.

 * ADDED: http_current_handler/3 to get access to accumulated options on a path

[Jan 20 2009]

 * FIXED: ?- edit(HTTPLocation).  Module-handling issue in locate/3 in http_dispatch.pl

 * CLEANUP: http_wrapper.pl: PlDoc and meta-predicate handler

 * FIXED: http_open/3: avoid leaking a socket-handle if the tcp_connect
   raises an exception.

[Jan 9 2009]

 * ADDED: library(http/html_head), tracking CSS and Javascript dependencies and
   merging them automatically into the HTML <HEAD> element.  Imported from
   Cliopatria project.
[Dec 20 2008]

 * ADDED: http_log_close/1 to provide for cooperation with logrotate

[Dec 18 2008]

 * MSFIX: Accept invalid cookie options sent by Microsoft (httponly). Matt Lilley.
[Nov 26 2008]

 * FIXED: Update HTTP header definition for a token to RFC 2616.  Matt Lilley
[Oct 9 2008]

 * ADDED: More flexible support for HTTP 503 (service unavailable) replies.

[Oct 8 2008]

 * FIXED: drop body of HTTP 304 response

[Oct 7 2008]

 * MODIFIED: Generalized the HTTP dispatch module authentication interface.
       * Instead of returning an atom representing the authenticated
       user, the hook must deliver a list of options that is added to
       the request.  The new API allows for multiple authentication
       hooks on the same location.  It is used by PlDoc to provide host
       access control.  See doc_access.pl from the PlDoc package.

[Oct 6 2008]

 * FIXED: Updated http_error to deal with new HTTP server

[Oct 5 2008]

 * ADDED: Support http_path.pl specifications in http_handler/3.

 * MODIFIED: library(http/http_dispatch): Handler changes.
   :- http_handler(prefix(Path), Action, Options) is now
   translated into http_handler(Path, Action, [prefix|Options]) with a
   warning.  Future versions will drop the prefix(Path) syntax as it
   becomes ambiguous after integrating http_path.pl with the handler
   declarations.

 * ADDED: html_write.pl: Support href(loc+[name1(value1),name2(value2)])

[Oct 3 2008]

 * ADDED: Support encode(Value) and describe http location handling.

 * ADDED: http_location_by_id/2 and location_by_id(ID) to html_write values.
   Suggested by Jacco van Ossenbruggen.

[Oct 2 2008]

 * ADDED: Allow redefining the HTTP server address output of non-200 pages.

 * ADDED: Provide hostname in http error messages

 * FIXED: File descriptor leak in http session management.

[Oct 1 2008]

 * FIXED: undefined parse_url_ex/3 in http_open.pl (deals with redirections)

[Sep 30 2008]

 * ADDED: Support for proxy routes in HTTP session management.  Also cleanup
   and additional tests in library(http/http_session).

[Sep 11 2008]

 * PORT: Add AC_PREREQ to configure.h for systems that auto-select autoconf
   versions.  After tip by Ulrich Neumerkel.

[Aug 30 2008]

 * FIXED: use csym instead of csymf for valid HTTP fieldname characters.  Edward Blake.

[Aug 11 2008]

 * INSTALL: Remove all configure files from the git repository
[Aug 5 2008]

 * MODIFIED: http_read_request/3 throws error on illegal request and http_wrapper/5
   maps these to internal server errors.

 * MODIFIED: http_open/3 now raises an error if the URL is not well-formed
   (used to fail silently).

[Jul 31 2008]

 * FIXED: handling setting http:chunked_transfer(never).  Yves Raimond.
[Jul 3 2008]

 * MODIFIED: Deleted the `after' option processing.  Modern code can start a
   thread to deal with formulating a reply and start procesing after the reply
   has been sent.

[Jul 2 2008]

 * ADDED: Support for HTTP 503 (service unavailable)

 * ADDED: Support for options chunked and spawn in http_handler/3.

[Jun 27 2008]

 * FIXED: Read JSON reply when using chunked encoding

 * FIXED: Post header when using data in CGI format (used by JSON posts)

[Jun 25 2008]

 * MODIFIED: http_get/3 using to(atom) or to(codes) perform UTF-8 decoding if
   the content type is declared as UTF-8.

[Jul 2 2008]

 * ADDED: Bug#365: timeout support for the HTTP client library.  Keri Harris.
[Jun 16 2008]

 * ENHANCED: Reduce HTTP header parsing time

 * ENHANCED: Reduce overhead of deleting dead HTTP sessions

[May 21 2008]

 * FIXED: atom_json_term(-,+,+): typo.  Torbjörn Lager

[Apr 28 2008]

 * ENHANCED: Perform a GC at the end of a communication with a client.  Note that
   at that moment we have little active memory (=cheap GC), while otherwise we may
   remain idle for a long time with large stacks.
[Apr 2 2008]

 * FIXED: Throw an exception in illegal input wo json_write/3.

[Apr 1 2008]

 * FIXED: Close the server socket in http_stop_server/2.  John Stewart.

[Mar 28 2008]

 * MODIFIED: html//1 interpretation of Module:Term.  Previously this acted as
   \(Module:Term), now it acts as Module:html(Term), interpreting an entire
   specification relative to a module.

[Mar 20 2008]

 * FIXED: Make HTTP status messages work when using the xhtml dialect

[Mar 10 2008]

 * FIXED: HTTP accept loop to deal properly with termination

[Mar 9 2008]

 * FIXED: Various issues around JSON booleans and null.   Michiel Hildebrand.

[Feb 26 2008]

 * FIXED: Avoid error on destroyed message queue in http_stop_server/3.
   Ferreira Maurizio.
[Feb 8 2008]

 * ADDED: Hook to expand HTML head material.

[Feb 7 2008]

 * ADDED: html_receive//2 to allow for post-processing of posted messages

 * MODIFIED: http_post//2 now executes embedded commands delayed.

[Feb 1 2008]

 * FIXED: html_write.pl: avoid multiple receivers for xmlns.

[Jan 23 2008]

 * PORT: Bug#346: Allow overriding COFLAGS and CWFLAGS in package
   configuration.   Keri Harris.

[Jan 22 2008]

 * DOC: Applied various patches.  Item#272, Ulrich Neumerkel.

[Dec 22 2007]

 * FIXED: Write JSON newlines always as \n.  Also write all control characters
   that have no defined escape (< ' ') as \uXXXX.  Michiel Hildebrand.

 * FIXED: json_read/2 for strings holding double-quotes.

[Dec 18 2007]

 * WORKAROUND: Emit no DOCTYPE header of the doctype is set to ''.  This avoids
   a bug in Microsoft IE AJAX processing.

[Dec 16 2007]

 * FIXED: recursive handling of lists in prolog_to_json/2.  Michiel Hildebrand

[Dec 15 2007]

 * FIXED: is_json_term/2 for pairs.  Michiel Hildebrand.

[Dec 13 2007]

 * ADDED: A predefined `head' receiver for http_post//2 and a predefined `xmlns'
   receiver used by xhtml_ns//2 to define XML namespaces in xhml mode.  Clarified
   documentation of the html_write library with examples on how to deal with HTML
   head material.

[Dec 11 2007]

 * DOC: various enhancement to the presentation of pldoc @keywords

[Dec 7 2007]

 * MODIFIED: renamed library(http/http_chunked) to library(http/http_stream).
   Added range-limited streams

[Dec 5 2007]

 * ADDED: library(http/http_json.pl), integrating JSON support into the
   HTTP libraries.

[Dec 4 2007]

 * ADDED: library(http/json), providing (still incomplete) JSON support

[Nov 16 2007]

 * ENHANCED: Bug#323: no longer force bgcolor=white in pagebody//1. Chris Sutton.

[Nov 9 2007]

 * ADDED: type between(Low, High) for numerical values

[Nov 6 2007]

 * ADDED: post/receive mechanism to modularize CSS and Javascript support in
   library(html_write).  Documented using PlDoc LaTeX backend

Oct 1, 2007

 * ADDED: http_stop_server/2 to stop a running HTTP server.

Sep 26, 2007

 * ADDED: http_set_authorization/2 in library(http/http_open) to provide
   authorization defauls.

 * ADDED: authorization(basic(User, Passowrd)) to the options of http_open/3.
   Now generates a permission error for common applicable 4xx errors.

Jun 21, 2007

 * Avoid leaking stream handle in http_get/3 on chunked encoding.

Jun 20, 2007

 * ENHANCED: Support chunked encoding in http_get/3 and http_post/4 on the
   new http_chunked library, reducing memory usage and overhead.

Jun 19, 2007

 * ADDED: Support chunked encoding through library(http/http_open) based on
   new http_chunked library.

Jun 16, 2007

 * ADDED: library(http/http_chunked).

Jun 7, 2007

 * ADDED: http_dispatch and http_authenticate libraries.

Jun 1, 2007

 * FIXED: Use new predicate_indicator frame attribute for safe error
   handling.

May 23, 2007

 * FIXED: Preserve extra request-headers over redirect.  Yves Raimond.

May 20, 2007

 * FIXED: redirection issues.  Yves Raimond.

Apr 12, 2007

  * ADDED: .svg to mimetypes

Apr 10, 2007

  * FIXED: Forcing UTF-8 character set.

Mar 22, 2007

  * FIXED: Bug#269: time-stamp was emitted in current locale.

Mar 19, 2007

  * ADDED: Include name of parameter in type-errors detected by
    http_parameters/2.

Mar 15, 2007

  * ADDED: Include peer in session management for better security.
  * ADDED: Broadcast session start/end to allow deletion of derived
    data.

Mar 11, 2007

  * FIXED: http_open/3: send Host: <host>:<port> if port is not 80.

Mar 9, 2007

  * ADDED: reply_html_page/2.  To be documented

  * ADDED: Pass protocol(http/https) into request.

Mar 7, 2007

  * FIXED: handle throw(http_reply(moved_temporary(URL))) properly.

Mar 6, 2007

  * ADDED: final_url option to http_open/3

Mar 5, 2007

  * MODIFIED: debug(header, ...) --> debug(http(header), ...)

  * ADDED: codes([Type], Codes) to http_post_data.

Feb 26, 2007

  * ADDED: Keep connections open on not_modified and replying files.

Feb 9, 2007

  * ADDED: Support for 302 (moved temporary) HTTP replies to the server.

Feb 8, 2007

  * ADDED: Map existence_error(http_location, URL) and
    permission_error(http_location, access, URL) to appropriate HTTP
    headers.

Feb 2, 2007

  * ADDED: Report status of stopped worker.

Jan 24, 2007

  * ADDED: Support for 303 (see other) HTTP replies to the server.
    Yves Raimond.

Jan 18, 2007

  * ADDED: html_set_options/1 and html_current_option/1 to html_write.pl.
    Allows for changing the document type as well as writing XHTML output
    from the same DCG rules.

Jan 15, 2007

  * ADDED: Redirect support for 301 and 303.  Yves Raimond.

Dec 13, 2006

  * FIXED: avoid passing reply_header option to convert hooks (conflict
    with SGML plugin).

Dec 12, 2006

  * FIXED: Properly close sockets on errors in http_open/3.

Dec 8, 2006

  * ADDED: support for HEAD to http_open/3.

Oct 31, 2006

  * ENHANCED: Documentation

Oct 30, 2006

  * ADDED: Allow for A+B in attribute values.

Sep 18, 2006

  * FIXED: inetd_httpd: set stream encoding to octet to be able to handle
    binary data.  Nicos Angelopoulos.

Aug 21, 2006

  * FIXED: Quote & inside attribute values.

Aug 10, 2006

  * ENHANCED: Time printing in http_header.pl to use format_time/3.  Faster
    and proper implementation of daylight saving time.

Aug 8, 2006

  * FIXED: http_relative_path/2.

Aug 7, 2006

  * DEBUG: Do not generate debug info for library html_write.pl, as it makes
    code using the library very hard to debug.

Jun 30, 2006

  * FIXED: dangling choicepoint in http_open/3.

  * ADDED: zero_or_more as parameter option to http_parameters/[2,3]

Apr 11, 2006

  * ADDED: http_parameters library

  * FIXED: properly handle the server closing the connection if the connection
    is specified as Keep-alive in the client (http_get/3 and http_post/4).

Feb 24, 2006

  * Added http_error.pl to generate nice looking stack-traces.

Feb 23, 2006

  * Added http_session.pl and http:request_expansion/2 hook.

Feb 16, 2006

  * Added http_current_request/1 to get access to the currently executing
    request.

Feb 10, 2006

  * Make http_post deal with Unicode data.

Jan 20, 2006

  * Map Host:  <host>:<port> into host(Host), port(Port) when reading
    HTTP requests.

Jan 16, 2006

  * Fixed redirect handling if the option to(Stream) is given.
    Jacco van Ossenbruggen.

Jan 11, 2006

  * Added: handling of 302 redirect messages in http_get/3.
  * Fix http_get/3 with sgml plugin and proxy option.  Usenet, `mans'.

Dec 10, 2005

  * Enhanced robustness of the server to malicious clients by using
    call_cleanup wrappers around the code doing the actual reply.  Old
    code lead to memory and file-descriptor leaking.

Dec 7, 2005

  * Added http_timestamp/2  to http_header.pl.  Also changed the time
    representation to be compatible to the current RFC1132 standard.

Nov 16, 2005

  * Avoid XPCE http servers to be garbage collected.

Oct 17, 2005

  * ADDED: Pass peer from threaded HTTP server to request.

  * ENHANCED: Use UTF-8 encoding for text by default.

Sep 28, 2005

  * FIXED: Regular expressions in xpce_httpd frontend.  Wouter Jansweijer.

Sep 23, 2005

  * ADDED: .class to mimetypes.pl.

Sep 7, 2005

  * FIXED: handle connection error in http_get/3 gracefully.

Sep 6, 2005

  * FIXED: handle error in tcp_accept/3 gracefully.

Sep 5, 2005

  * ADDED: method(head) --> "HEAD".  Matt Lilley.

Apr 26, 2005

  * ADDED: debug(sgml_plugin) and some missing use_module calls.  Simplifies
    debugging automatic conversion.

Mar 4, 2005

  * FIXED: Bug#24: open files binary.   Fabien Todescato.

Feb 11, 2005

  * FIXED: empy header field eats next line as value.  Chris Ritchey.

Jan 4, 2005

  * FIXED: Bug#2: Disconnect from POST replies.

Sep 23, 2004

  * FIXED: Ignore minor types when deciding which plugin to use for the
    SGML plugin.

Aug 30, 2004

  * FIXED: Bug#179: Avoid XPCE dependency on strip_module/3.  Sandro Hawke.

Aug 16, 2004

  * FIXED: Remove " from boundary=... HTTP-POST requests.  Appears necessary
    for posting to Tomcat servers.  Also added explicit MIME-Version: 1.0
    to the header.

Aug 12, 2004

  * ADDED: form_data(+List) alternative to http_post/4.

  * ADDED: option reply_header(-Header) to get the full replied header for
    GET and POST methods.  Also added decoding of the SetCookie field.

Aug 5, 2004

  * ADDED: request_header(Name=Value) to http_open/3

Aug 3, 2004

  * ADDED: keep_alive_timeout(Seconds) for multi-threaded server.

  * FIXED: remove choicepoints in http_open/3

Jul 31, 2004

  * ADDED: http_current_worker/2

Jul 30, 2004

  * ADDED: Allow explicit head and body in page//1 and page//2

Jul 21, 2004

  * FIXED: Bug#166: Allow alternative responses (Sandro Hawke).

  * FIXED: Bug#168: Close connection on timeout (Sandro Hawke).

  * FIXED: Bug#165: Added reuseaddr (Sandro Hawke).

Jul 18, 2004

  * ENHANCED: handle `normal' errors silent (David Reitter)

Jun 28, 2004

  * ENHANCED: print server errors and continue

  * ADDED: SSL interface to threaded HTTP server

Jun 21, 2004

  * FIXED: Handling continue header required for POST to MS IIS servers.
    Also more patches sending \r\n where required.  With patches from
    Mike Elston.

Jun 16, 2004

  * FIXED: make HTTP client library write header line terminate with
    \r\n.  Mike Elston.

Jun 15, 2004

  * FIXED: Undefined predicate strip_module/2 in thread_httpd.pl when
    there is no access to XPCE.  Dmitry.

  * ADDED: request_header(Name=Value) option to the option list of
    http_get/3 and http_post/4 for adding user request fields.

  * ADDED: Map body throw(status(not_modified)) onto a "304 Not Modified"
    page.  Mike Elston.

May 20, 2003

  * DOCS: Documented http_post_data/3

  * ADDED: form([Name=Value, ...]) input type to http_post_data/3

May 12, 2003

  * FIXED: problem in mime_pack/3 using Name=Value

Mar 4, 2003

  * ADDED: http_open/3: header(+Name, -Value) option.  Wouter
    Jansweijer.

Jan 23, 2003

  * ADDED: Provide User-Agent header for the client libraries

Jan 8, 2003

  * ADDED: Support for using proxy servers Option: proxy(Host, Port).

  * ADDED: Support for 302 (document moved) reply in http_open/3.

