Commits on Jul 10, 2014
  1. @capflam

    Remove support of wildcards for R15B03 and previous

    A bug in filelib:wildcard/1,2 was fixed in R16B:
    So, wildcard strings in the configuration file are now forbidden for older
    capflam committed Jul 10, 2014
  2. @capflam
  3. @capflam

    Add support of wildcards and relative paths to load sub-config files.

    Now, subconfig and subconfigdir targets accept relative paths, searched
    relatively to the configuration location. So for the configuration
    "/etc/yaws/yaws.conf", all relative files and directories will be searched from
    "/etc/yaws". Of course, absolute paths are always supported.
    furthermore, the subconfig target can take Unix-style wildcard strings to
    include several files at once. See filelib:wildcard/1 for details.
    Last, hidden files, starting by a dot, will be ignored in any cases.
    capflam committed Jul 10, 2014
  4. @capflam

    Check #deflate.min_compress_size option for large files

    Now large files are compressed only if their size is greater than
    the #deflate.min_compress_size option.
    capflam committed Jul 10, 2014
  5. @capflam

    Relax rules that allow the parsing of a query string or an urlencoded…

    … body
    The parsing of a query string or an urlencoded body was allowed, respectively,
    for 'GET' or 'POST' requests. Now, this can be done for any kind of requests. Of
    course, a body is parsed only if its Content-Type is set to
    In the same way, a body can now be parsed as a multipart content if its
    Content-Type is set to 'multipart/form-data', regardless of the request type.
    As a consequence of these changes, yaws_api:getvar/2 now returns the merged
    result of values found in the query string and in the urlencoded body (if any).
    capflam committed Jul 8, 2014
Commits on Jul 7, 2014
  1. @capflam
  2. @capflam

    Add systemd service script and fix other init scripts

    Other changes:
     * Replace README by
     * Add travis configuration
     * Fix testsuite and dependencies detection
    capflam committed Jun 23, 2014
  3. @capflam

    Handle a bug in unicode module in releases R14B04 and previous

    The code points 16#FFFE and 16#FFFF (not assigned but valid) are considered as
    invalid in releases R14B04 and previous. So for these releases, the websockets
    testsuite always failed. This commit worked around the bug.
    It was fixed in OTP with the commit 34db767655:
    capflam committed Jun 23, 2014
  4. @capflam
  5. @capflam

    Do not set recbuf by default on listening sockets

    This patch removes a bug I experienced on FreeBSD during tests on the loopback
    interface because of its MTU. So, I don't really know why that happens on
    FreeBSD and not on Linux, but because loopback MTU is greater than the recbuf
    value (16K on loopback vs 8k in Yaws), if a client sends data, Yaws will read
    them very slowly.
    Furthermore, there is no good reason to tweak this value by default. And, if
    required, it is always possible to configure it.
    capflam committed Jun 23, 2014
  6. @capflam

    Fix a backward compatibility bug with inet:parse_strict_address/1

    inet:parse_strict_address/1 was introduced in R16. For previous releases, we
    need to rely on inet_parse:ipv4strict_address/1 and
    inet_parse:ipv6strict_address/1 functions.
    capflam committed Jun 23, 2014
  7. @capflam

    Massive autotools refactoring & cleanup

    Now, all makefile are generated by automake. This way, many things are more
    configurable and maintainable.
    Main (visible) changes:
     * Now, you can configure and compile Yaws outside the source directory. It is
       also possible to generate an archive for distribution, using the 'dist' target
       (from now, 'distcheck' target should always pass).
     * We track .erl dependencies using '-M*' flags of ERLC.
     * generated header 'yaws_configure.hrl' disappears. HAVE_SENDFILE,
       HAVE_ERLANG_SENDFILE and HAVE_CRYPTO_HASH macros are defined in ERLC flags.
     * yaws_generated:localinstall/0 function disappears (see comment about local
     * To create a windows installer, we just need to run the 'mkinstaller'
       target. Read win32/README.developer for details.
     * We use standard Erlang installation path for Yaws, relative to the erlang
       library directory (/usr/lib/erlang/lib). Now, '$(libdir)/yaws' is a link. We
       do the same for yapp application.
     * "local install" was removed. Now, to do a "developer install", we just need
       to set a prefix during the project configuration using --prefix option. So,
       you need to install yaws to test it.
     * DESTDIR variable is still supported.
     * scripts/make-release was rewritten to use 'dist' and 'mkinstaller' targets.
     * Installation of Yaws applications has slightly changed. Now they are
       installed in their own directory, in '$(localstatedir)/yaws'. So, chat
       application will be installed in '$(localstatedir)/yaws/chat', with 'www' and
       'ebin' subdirs.
    Main targets (others than all/install/clean....):
      * all           : compile Yaws
      * debug         : compile Yaws with debug flags
      * clean         : remove files produced by all or debug target
      * install       : do a proper install of Yaws
      * doc or docs   : build the documentation
      * check or test : launch tests
      * cleantest     : remove files produced by check target
      * dialyzer      : run dialyzer on Yaws
      * mkinstaller   : build an installer for windows
      * cleaninstaller: remove files produced by mkinstaller target
      * apps          : compile Yaws applications (chat,mail,wiki,yapp)
      * cleanapps     : remove files produced by apps target
      * installapps   : install Yaws applications
      * fullinstall   : install + installapps
      * fullclean     : clean + cleantest + cleanapps + cleaninstaller
      To install an application, run: (cd application/{APP} && make install)
    Of course, many things can be customized during configuration and Rebar still
    works as expected. To do an install with (almost) the same tree than with
    previous of Yaws, do:
      $> ./configure yawsdir=${prefix}/lib/yaws yappdir=${prefix}/lib/yapp \
            --sysconfdir=/etc --localstatedir=/var
      $> make install
    Here is the default installation tree on my debian:
        ├── lib
        │   └── erlang
        │       └── lib
        │           ├── yapp-0.4.2
        │           │   ├── doc/
        │           │   ├── ebin/
        │           │   ├── examples/
        │           │   └── priv/docroot/
        │           └── yaws-1.98
        │               ├── ebin/
        │               ├── include/
        │               └── priv/
        │               ├── examples/
        ├── local/bin/yaws
        ├── local/etc/init.d/yaws
        ├── local/etc/yaws/
        ├── local/etc/mail/yaws-webmail.conf
        ├── local/lib/pkgconfig/yaws.pc
        ├── local/lib/yapp -> /usr/lib/erlang/lib/yapp-0.4.2
        ├── local/lib/yaws -> /usr/lib/erlang/lib/yaws-1.98
        ├── local/share/doc/yaws/yaws.pdf
        ├── local/share/man/{man1,man5}/
        ├── local/var/log/yaws
        ├── local/var/run/yaws
        └── local/var/yaws
            ├── chat/{ebin,www}
            ├── mail/{ebin,www}
            ├── wiki/{ebin,www}
            └── www
    capflam committed Jun 10, 2014
Commits on May 27, 2014
  1. @vinoski

    update known dialyzer warnings

    vinoski committed May 27, 2014
Commits on May 20, 2014
  1. @vinoski

    convert non-ASCII characters in json2 decoding

    Non-ASCII characters in JSON strings are now decoded to UTF-8.
    vinoski committed May 20, 2014
Commits on Apr 29, 2014
  1. @vinoski

    fix broken rebar build

    In commit cb49390 I broke the ability for yaws to be used as a rebar
    dependency for other projects. Move src/ back to
    src/ Move the code in rebar.config.script to
    src/ file to process the app dependencies for
    src/ Change src/Makefile to process app dependencies when
    creating ebin/
    vinoski committed Apr 29, 2014
Commits on Apr 22, 2014
  1. @vinoski

    Merge pull request #176 from richcarl/remove-vsn-attributes

    remove -vsn attributes to ensure the MD5 sum is used for all modules
    vinoski committed Apr 22, 2014
Commits on Apr 16, 2014
  1. @vinoski

    Merge pull request #175 from yakaz/fcgi-ipv6

    IPv6 address parsing + IPv6 lookup for FastCGI and reverse proxy
    vinoski committed Apr 16, 2014
Commits on Apr 15, 2014
  1. @dumbbell

    Add a nslookup_pref global parameter

    This parameter allows to change the name resolution and connection
    preference for fcgi servers and revproxy URLs. It takes a list of the
    form [inet | inet6].
    For instance, to perform only IPv4 resolution:
        nslookup_pref = [inet]
    To perform both IPv4 and IPv6, but try IPv6 first:
        nslookup_pref = [inet6, inet]
    The default value is [inet]. Therefore, the behavior remains the same
    with this addition.
    This parameter is used by two new functions:
        o  yaws:tcp_connect/{3,4}
        o  yaws:ssl_connect/{3,4}
    They are wrappers around gen_tcp:connect/{3,4} and ssl:connect/{3,4} and
    take care of connection retries for each configured family.
    dumbbell committed Apr 9, 2014
  2. @dumbbell

    Accept an IPv6 between "[...]" as an fcgi server hostname

    Here are some examples:
        php_handler = <fcgi, [::1]:9000>
        fcgi_app_server = [::1]:9000
    The square brackets syntax is already used in URLs (http://[::1]:8080/)
    and allows to mix an IPv6 address and a port number.
    While here, fix a bug in revproxy URL parsing where IPv6 between
    brackets were considered as a syntax error.
    dumbbell committed Apr 9, 2014
Commits on Apr 14, 2014
  1. @vinoski

    Merge pull request #174 from yakaz/install-freebsd

    scripts/Install: Create ${etcdir}/rc.d on FreeBSD
    vinoski committed Apr 14, 2014
  2. @dumbbell

    scripts/Install: Create ${etcdir}/rc.d on FreeBSD

    If Yaws is installed in a non-standard directory, we must create
    ${etcdir}/rc.d before copying the init script there.
    dumbbell committed Apr 14, 2014
Commits on Apr 13, 2014
  1. @vinoski
Commits on Apr 12, 2014
  1. @vinoski

    allow a cleanup pid with replace_cookie_session

    Add yaws_api:replace_cookie_session/3 and
    yaws_session_server:replace_session/3 to allow the user to pass a cleanup
    pid in order to associate a new cleanup process with the replacement
    session. Thanks to Patrick Moy for suggesting this.
    vinoski committed Apr 12, 2014
Commits on Apr 11, 2014
  1. @vinoski

    allow extra app dependencies for to be configured

    Yaws can depend on crypto for random numbers and hashes, and on the
    compiler for .yaws pages. But the default file specifies only
    kernel and stdlib as application dependencies, since not all Yaws
    deployments use crypto or compiler. Still, if a Yaws system uses crypto and
    compiler without including them in the file, building and
    deploying an Erlang/OTP release for that system will fail.
    Add --enable-crypto and --enable-compiler options to the configure script
    to allow the user to add either or both of these applications to the file. Specifying the --enable-crypto option also causes the Yaws
    startup code to start the crypto application; likewise for
    --enable-compiler and the compiler application.
    For rebar builds, enhance rebar.config.script to generate the same files
    the configure script generates for any extra app dependencies. Setting the
    YAWS_APPDEPS environment variable to a space- or comma-separated list of
    addition applications to add to, e.g.
    YAWS_APPDEPS='crypto compiler'
    causes rebar to add those apps to the generated file and ensure
    they're started before Yaws started.
    vinoski committed Apr 3, 2014
Commits on Apr 2, 2014
  1. @vinoski

    dialyzer maintenance

    Fix known dialyzer warnings. Also change Makefile dialyzer rule to make it
    easier to see pass/fail results.
    vinoski committed Apr 2, 2014
Commits on Mar 27, 2014
  1. @vinoski

    remove unused -DDYNAMIC_DRIVER from c_src/Makefile

    Thanks to Richard Carlsson for pointing out this unused option.
    vinoski committed Mar 27, 2014
Commits on Mar 25, 2014
  1. @vinoski

    add check for YAWS_DISABLE_PAM to rebar.config.script

    Setting the OS environment variable YAWS_DISABLE_PAM to any value causes
    rebar builds to avoid building pam. This is equivalent to using the
    --disable-pam option with configure, and is useful for building in
    environments where pam development files are not available.
    vinoski committed Mar 25, 2014
  2. @vinoski

    add .rebar dir to .gitignore

    vinoski committed Mar 25, 2014
Commits on Mar 20, 2014
  1. @vinoski

    fix #173: set ibrowse dep to v3.0.4 in rebar.config

    Set ibrowse dependency to version 3.0.4 to match what test/Makefile
    selects. Later versions do not work so well on OS X Mavericks.
    vinoski committed Mar 20, 2014
Commits on Mar 14, 2014
  1. @vinoski

    fix #172: make yaws_ticker handle EXIT messages correctly

    The yaws_ticker processes were not cleaned up due to an incorrect EXIT
    message receive spec. Thanks to Nico Kruber for reporting the problem, and
    for supplying a new regression test case which is now in the test/eunit
    vinoski committed Mar 14, 2014
Commits on Mar 12, 2014
  1. @vinoski
  2. @vinoski
Commits on Mar 10, 2014
  1. @vinoski
Commits on Feb 26, 2014
  1. @capflam