Skip to content
This repository

Aug 23, 2012

  1. Steve Vinoski

    document the new yaws_api:reformat_header/2 function

    authored August 23, 2012

Jul 25, 2012

  1. Christopher Faulet

    Make the mime types mappings configurable

    Now, it possible to customize the global mime types mappings and to overload
    it for each virtual server. It can be done using following directives in the
    global part or the server part of the configuration:
    * default_type: Defines the default mime type to be used where Yaws cannot
      determine it by its mime types mappings (default: text/plain).
      In the server part, this directive overloads the global one.
    * default_charset: Defines the default charset to be added when a response
      content-type is text/* (default: none). In the server part, this directive
      overloads the global one.
    * mime_types_file: Overrides the default mime.types file included with Yaws
      (default: ${PREFIX}/lib/yaws/priv/mime.types). In the server part, this
      directive overloads the global one but mappings defined in this file will
      not overload those defined by add_types directives in the global part.
    * add_types: Specifies one or more mappings between mime types and file
      extensions. More than one extension can be assigned to a mime type. If a
      mapping is defined in the global part and redefined in a server part using
      this directive, then the later is used. Else the global one is kept.
    * add_charsets: Specifies one or more mappings between charsets and file
      extensions. More than one extension can be assigned to a charset. If a
      mapping is defined in the global part and redefined in a server part using
      this directive, then the later is used. Else the global one is kept.
    Here is an example:
      default_type = text/html
      <server localhost>
          port = 8000
          listen =
          docroot = /var/www
          # nothing is overloaded in the vhost
      <server localhost>
          port = 8001
          listen =
          docroot = /var/www
          # overload global configuration:
          default_type    = text/plain
          mime_types_file = /etc/mime.types
          add_types       = <text/xhtml, yaws> <application/x-test, tst test>
          default_charset = UTF-8
          add_charsets    = <ISO-8859-1, php html yaws> <US-ASCII, tst>
    During Yaws compilation, a default module 'mime_types' is created using the
    default mime.types file. Then, when yaws starts up, this module is
    re-generated, re-compiled and loaded dynamically. The new module replaces the
    default one but the .beam file is unchanged. So if one of these steps failed,
    we fall back on the default module.
    authored July 19, 2012 capflam committed July 25, 2012

Jul 10, 2012

  1. Steve Vinoski

    wrap SSL sockets in tuple

    Yaws previously internally used details of an SSL socket representation
    that's supposed to be private/opaque to Erlang's SSL support. Encapsulate
    SSL sockets within a {ssl, SslSocket} tuple and add the
    yaws_api:get_sslsocket/1 function that returns a socket for SSL sockets or
    undefined for non-SSL sockets. Also document the new get_sslsocket/1
    function and other minor tweaks to SSL areas of the documentation.
    authored April 20, 2012
  2. Christopher Faulet

    Refactor Set-Cookie/Cookie header parsing to follow RFC6265

    RFC6265 obsoletes RFC2965 and RFC2109. #setcookie{} and #cookie{} are
    changed to reflect this new RFC. So, yaws_api:parse_set_cookie/1 and
    yaws_api:parse_cookie/1 are refactored accordingly:
    * yaws_api:parse_set_cookie/1: Because RFC2109 and RFC2965 are still used,
      we try to be backward compatible with these old RFCs. So this function
      returns a #setcookie{} record when only one cookie is found else it returns
      a list of #setcookie{} records.
      in RFC2109 and RFC2965, cookies are separated by comma. So, comma is
      forbidden in 'path-av' and 'extension-av' except for double-quoted value.
      The parsing are not really strict because of the compatibility and can lead
      to unwanted behaviors.
      Old attributes (like 'Comment' or 'Port') are still parsed and can be
      found into #setcookie.extensions field.
    * yaws_api:parse_cookie/1: This function follows the RFC6265, so all cookie
      attributes (like '$Domain' or '$Path') are parsed like any other cookie.
    authored July 09, 2012

Jul 04, 2012

  1. Christopher Faulet

    Fix parse_set_cookie/1 and format_set_cookie/1 functions

    1. According to the RFCs 2109 and 2965, multiple cookies can be set in a
    single 'Set-Cookie' header. So, yaws_api:parse_set_cookie/1 now returns a
    list of #setcookie{} records. If no cookie was found or if an error occurred,
    it returns []. The parsing is also improved.
    Note that this fix breaks the compatibility with previous versions.
    2. In yaws_api:format_set_cookie/1, options are now always formated as
    3. 2 new functions are added, yaws_api:parse_cookie/1 and
    yaws_api:format_cookie/1, to parse and format 'Cookie' headers. To let these
    functions to work, the #cookie{} record was introduced.
    Documentation and testsuite are updated accordingly.
    authored July 04, 2012

Jun 27, 2012

  1. Steve Vinoski

    add doc for new functions for manipulating #headers{} records

    Commit cccc578 added new functions to yaws_api for manipulating #headers
    records: set_header/2, set_header/3, get_header/2, and
    delete_header/2. This commit adds the documentation.
    authored June 27, 2012

Apr 27, 2012

  1. Christopher Faulet

    Fix bugs in yaws_api:parse_multipart_post/1,2 for chunked requests

    For chunked requests, when several parts are parsed, only the first one was
    processed properly. For the others, all the content of each part was needed
    to be parsed. So when an huge file was uploaded, this bug could lead to a
    memory exhaustion.
    Note: Now, yaws_api:parse_multipart_post/1,2 can return '{error, Reason}'
    if an error occurred during the parsing.
    authored April 27, 2012

Feb 21, 2012

  1. Christopher Faulet

    Manage all 'special' headers of #headers{} and #outh{} records

    Some headers, like 'Content-Encoding' or 'Transfer-Encoding' were
    not correctly handled. These changes can be useful for everyone who
    writes yaws scripts or appmods. In particular, the next version of
    the reverse proxy depends on it.
    authored February 21, 2012

Feb 15, 2012

  1. Christopher Faulet

    Fix issue #88

    2 changes here:
     * Revert "Flush remaining data when dynamic content is delivered"
    This reverts commit d09ed3d.
    Systematically flushing data is not a good idea.
     * Add "flush" as possible return value of the out/1 function
    Some clients (eg. Firefox and google-chome...) do not handle connection
    close gracefully when the connection is closed during sending data; they
    do not read the server response. So, when the response is important, to
    warn the end-user that an error occured for example, we must be fair by
    flushing data before closing the connection.
    authored February 15, 2012

Jan 18, 2012

  1. Sergei Golovan

    fix syntax and spelling errors in man pages

    In man/yaws.conf.5, man/yaws_api.5: Fixed a few syntax and spelling
    errors in manpages.
    authored January 16, 2012 vinoski committed January 17, 2012

Jan 06, 2012

  1. Christopher Faulet

    Update documentation and manpages accordingly

    authored January 06, 2012

Dec 25, 2011

  1. exhtml cleanup

    authored December 25, 2011

May 12, 2010

  1. Steve Vinoski

    Allow "stream processes" to close the client socket

    Yaws allows application processes to take control of the client socket
    via the streamcontent_from_pid directive. Sometimes during the course
    of its data delivery the application might find that it needs to close
    the socket, but the original design did not provide a way for the
    application to tell Yaws the socket was closed. The result was that a
    message like the one below would show up in the Yaws log whenever a
    closed socket was returned to Yaws, due to Yaws trying to continue to
    use the socket as if it were still open:
         =ERROR REPORT==== 12-May-2010::00:27:05 ===
         Yaws process died: {{badmatch,{error,einval}},
    Change yaws_api:stream_process_end/2 to allow the application to pass
    the atom 'closed' as the first argument, in place of the socket
    argument. This informs Yaws that the socket is closed and prevents it
    from trying to keep using it, thus avoiding errors like the one above.
    authored May 12, 2010

Oct 17, 2009

  1. Steve Vinoski

    fixes for FCGI authorization (Bruno Rijsman), plus I cleaned up inden…

    …tation and comments in yaws_cgi.erl
    authored October 17, 2009

Sep 21, 2009

  1. Steve Vinoski

    document streamcontent process delivery functions

    authored September 21, 2009

Jul 10, 2009

  1. Claes Wikstrom

    cgi support

    authored July 10, 2009

Apr 27, 2009

  1. Claes Wikstrom

    doc patch from kevingrimes

    authored April 27, 2009

Jan 22, 2009

  1. Claes Wikstrom

    stream content with a timeout patch from Davide Marques

    git-svn-id: 9fbdc01b-0d2c-0410-bfb7-fb27d70d8b52
    authored January 22, 2009

Oct 20, 2008

  1. Claes Wikstrom

    doc fixes

    git-svn-id: 9fbdc01b-0d2c-0410-bfb7-fb27d70d8b52
    authored October 20, 2008

Sep 12, 2008

  1. Claes Wikstrom

    added redirect_self to yaws_api

    git-svn-id: 9fbdc01b-0d2c-0410-bfb7-fb27d70d8b52
    authored September 12, 2008

Jul 01, 2008

  1. Claes Wikstrom


    git-svn-id: 9fbdc01b-0d2c-0410-bfb7-fb27d70d8b52
    authored July 01, 2008
  2. Claes Wikstrom

    modified patch by Robert David to add a hook to yaws session server w…

    …hen a session is gone
    git-svn-id: 9fbdc01b-0d2c-0410-bfb7-fb27d70d8b52
    authored July 01, 2008

Feb 14, 2008

  1. Claes Wikstrom

    untabified all of yaws

    git-svn-id: 9fbdc01b-0d2c-0410-bfb7-fb27d70d8b52
    authored February 14, 2008

Nov 10, 2007

  1. Claes Wikstrom


    …/yaws@1175 9fbdc01b-0d2c-0410-bfb7-fb27d70d8b52
    authored November 10, 2007

May 24, 2007

  1. Claes Wikstrom

    added a dir_listing function in yaws_api

    git-svn-id: 9fbdc01b-0d2c-0410-bfb7-fb27d70d8b52
    authored May 24, 2007

Sep 20, 2006

  1. Claes Wikstrom

    *** empty log message ***

    git-svn-id: 9fbdc01b-0d2c-0410-bfb7-fb27d70d8b52
    authored September 20, 2006

Apr 27, 2006

  1. Claes Wikstrom

    added support for 2 additional configure

    flags, --disable-pam and --with-extrainclude=DIR
    Worked the Makefiles to properly support DESTDIR. This is
    useful for packagers (deb, rpm ...)
    git-svn-id: 9fbdc01b-0d2c-0410-bfb7-fb27d70d8b52
    authored April 27, 2006

Feb 01, 2006

  1. Claes Wikstrom

    added pam support + prepare for 1.58

    git-svn-id: 9fbdc01b-0d2c-0410-bfb7-fb27d70d8b52
    authored February 01, 2006

May 23, 2005

  1. Claes Wikstrom


    git-svn-id: 9fbdc01b-0d2c-0410-bfb7-fb27d70d8b52
    authored May 23, 2005

Apr 12, 2005

  1. Claes Wikstrom


    git-svn-id: 9fbdc01b-0d2c-0410-bfb7-fb27d70d8b52
    authored April 12, 2005

Sep 13, 2004

  1. Claes Wikstrom

    added example docs on how to stream data

    git-svn-id: 9fbdc01b-0d2c-0410-bfb7-fb27d70d8b52
    authored September 13, 2004

May 28, 2004

  1. Claes Wikstrom

    yaws_session_server ttl patch from Rob.Schmersel

    git-svn-id: 9fbdc01b-0d2c-0410-bfb7-fb27d70d8b52
    authored May 28, 2004
  2. Claes Wikstrom

    New feature yssi, yaws include

    git-svn-id: 9fbdc01b-0d2c-0410-bfb7-fb27d70d8b52
    authored May 28, 2004

Mar 11, 2004

  1. Claes Wikstrom

    explicit support for content_length

    git-svn-id: 9fbdc01b-0d2c-0410-bfb7-fb27d70d8b52
    authored March 11, 2004

Mar 10, 2004

  1. Claes Wikstrom

    postvar bug by hal snyder, added yaws_api:query_url/1 added the id su…

    …pport and removed the uid stuff, added -j to control trace of a running daemon, bugfixes in the logger,
    git-svn-id: 9fbdc01b-0d2c-0410-bfb7-fb27d70d8b52
    authored March 10, 2004
Something went wrong with that request. Please try again.