Ngx_openresty devel version 1.2.8.5 released

Hello guys!

I am happy to announce that the new development version of
ngx_openresty, 1.2.8.5, is now released:

http://openresty.org/#Download

Special thanks go to all our contributors and users for helping make
this release happen!

Below is the complete change log for this release, as compared to the
last (devel) release, 1.2.8.3:

  • upgraded LuaNginxModule to 0.8.2.

    • feature: added “ngx.HTTP_MKCOL”, “ngx.HTTP_COPY”,
      “ngx.HTTP_MOVE”, and other WebDAV request method constants;
      also added corresponding support to ngx.req.set_method and
      ngx.location.capture. thanks Adallom Roy for the patch.

    • feature: allow injecting new user Lua APIs (and overriding
      existing Lua APIs) in the “ngx” table.

    • bugfix: ngx.req.set_body_file() always enabled Direct I/O
      which caused the alert message “fcntl(O_DIRECT) … Invalid
      argument” in error logs on file systems lacking the Direct
      I/O support. thanks Matthieu T. for reporting this
      issue.

    • bugfix: buffer corruption might happen in
      ngx.req.set_body_file() when Nginx upstream modules were
      used later because ngx.req.set_body_file() incorrectly set
      “r->request_body->buf” to the in-file buffer which could get
      reused by “ngx_http_upstream” for its own purposes.

    • bugfix: no longer automatically turn underscores (_) to
      dashes (-) in header names for ngx.req.set_header and
      ngx.req.clear_header. thanks aviramc for the report.

    • bugfix: segmentation fault might happen in nginx 1.4.x when
      calling ngx.req.set_header on the “Cookie” request headers
      because recent versions of Nginx no longer always initialize
      “r->headers_in.cookies”. thanks Rob W for reporting this
      issue.

    • bugfix: fixed the C compiler warning “argument ‘nret’ might
      be clobbered by ‘longjmp’ or ‘vfork’” when compiling with
      Ubuntu 13.04’s gcc 4.7.3. thanks jacky and Rajeev’s reports.

    • bugfix: temporary memory leaks might happen when using
      ngx.escape_uri, ngx.unescape_uri, ngx.quote_sql_str,
      ngx.decode_base64, and ngx.encode_base64 in tight Lua loops
      because we allocated memory in nginx’s request memory pool
      for these methods.

    • optimize: ngx.escape_uri now runs faster when the input
      string contains no special bytes to be escaped.

    • testing: added custom test scaffold t::TestNginxLua which
      subclasses Test::Nginx::Socket. it supports the environment
      “TEST_NGINX_INIT_BY_LUA” which can be used to add more
      custom Lua code to the value of the init_by_lua directive in
      the Nginx configuration.

  • upgraded SrcacheNginxModule to 0.21.

    • bugfix: responses with a status code smaller than all the
      status codes specified in the srcache_store_statuses
      directive were not skipped as expected. thanks Lanshun Zhou
      for the patch.
  • feature: applied the invalid_referer_hash patch to the Nginx
    core to make the $invalid_referer variable accessible in
    embedded dynamic languages like Perl and Lua. thanks Fry-kun for
    requesting this.

  • updated the dtrace patch for the Nginx core.

    • print out more info about the Nginx in-file bufs in the
      tapset function “ngx_chain_dump”.

The HTML version of the change log with lots of helpful hyper-links
can be browsed here:

http://openresty.org/#ChangeLog1002008

OpenResty (aka. ngx_openresty) is a full-fledged web application
server by bundling the standard Nginx core, lots of 3rd-party Nginx
modules and Lua libraries, as well as most of their external
dependencies. See OpenResty’s homepage for details:

http://openresty.org/

We have been running extensive testing on our Amazon EC2 test cluster
and ensure that all the components (including the Nginx core) play
well together. The latest test report can always be found here:

http://qa.openresty.org

Have fun!
-agentzh