[erlang-questions] yaws 1.97

Claes Wikstrom klacke@REDACTED
Sat Oct 19 13:09:53 CEST 2013


Hi all,

We're happy to announce Yaws 1.97

This release contains the usual mix of small improvements, generally
just making Yaws more and more of a rock solid web server.

Code on github,  https://github.com/klacke/yaws
Releases and relnotes on http://yaws.hyber.org

Important DOS note: The OTP file:sendfile is buggy, so all users of
send_file are susceptible to this.  If you use Yaws in production,
carefully ponder the text below.

Christopher Faulet worked this, and his excellent
checkin comment says


-------

Add the way to configure the version of sendfile method to use

Now, at compile time, we only check if sendfile
syscall and file:sendfile/5 are supported. Then,
dynamically, we can configure which version to use.

This can be done using the directive large_file_sendfile.
Supported values are:

      * erlang: if supported, use file:sendfile/5
      * yaws: if supported, use the Yaws sendfile linked-in driver
      * disable: do not use any sendfile method, but gen_tcp:send/2

     If an unsupported method is configured,
     we fall back on gen_tcp:send/2.

     file:sendfile/5 implementation is buggy (in R15 & R16).
     When async-threads are enabled, in efile driver,
     the tcp socket is set in blocking mode and the
     sendfile syscall is executed on an async-thread.
     So an unresponsive client could block it for a very long
     time and therefore block the async-thread.
     In this way, all async-threads could be easily blocked.
     So, by default, the use of sendfile is disable.



More information about the erlang-questions mailing list