Ngx_openresty devel version 1.4.1.1 released

Hello guys!

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

http://openresty.org/#Download

This is the first release based on the Nginx 1.4.x stable series.

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 (stable) release, 1.2.8.6:

  • upgraded the Nginx core to 1.4.1.

  • bugfix: ./configure: use of spaces in the “–with-cc” option
    values resulted in errors.

  • bugfix: applied the unix_socket_accept_over_read patch to fix a
    buffer over-read issue in the Nginx core when Nginx is
    configured to listen on a unix domain socket.

  • bugfix: applied the gcc-maybe-uninitialized-warning patch to the
    Nginx core to fix a gcc warning with gcc 4.7.3/4.7.2.

  • upgraded LuaNginxModule to 0.8.5.

    • change: made
      ngx.say/ngx.print/ngx.eof/ngx.flush/ngx.send_headers return
      “nil” and a string describing the error in case of most of
      the common errors (instead of throwing out an exception),
      and return 1 for success.

    • feature: added new directive lua_regex_match_limit for
      setting PCRE’s “match_limit” protection for regex execution.

    • feature: now we store the nginx request object as a named
      Lua global variable “__ngx_req” to help FFI-based Lua code
      directly access it.

    • bugfix: the ngx.ctx tables would leak memory when ngx.ctx,
      ngx.exec()/ngx.req.set_uri(uri, true), and log_by_lua were
      used together in a single location. thanks Guanlan Dai for
      writing the gdb utils to catch this.

    • bugfix: setting ngx.var.VARIABLE could lead to buffer
      over-read in “luaL_error” when an error happened.

    • bugfix: tcpsock:send(“”) resulted in the error log alert
      message “send() returned zero”.

    • bugfix: ngx.flush(true) might not return 1 on success.

    • bugfix: when compiling with “-DDDEBUG=1”, there was a
      compilation error. thanks tigeryang for the report.

    • optimize: avoided use of the nginx request objects in
      ngx.escape_uri, ngx.unescape_uri, ngx.quote_sql_str,
      ngx.decode_base64, ngx.encode_base64, ngx.encode_args, and
      ngx.decode_args.

    • optimize: no longer store “cf->log” into the Lua registry
      table because we can always directly access the global
      “ngx_cycle->log” thing.

    • refactor: added inline functions “ngx_http_lua_get_req” and
      “ngx_http_lua_set_req” to eliminate code duplication when
      storing or fetching the nginx request object from the lua
      global variable table.

    • docs: typo fixes in the code sample for body_filter_by_lua.
      thanks cyberty for the patch.

    • docs: mentioned my Nginx Systemtap Toolkit which is very
      useful for online debugging on Linux.

  • upgraded HeadersMoreNginxModule to 0.21.

    • bugfix: segmentation fault might happen in Nginx 1.4.x when
      using the more_set_input_headers directive on the Cookie
      request headers because recent versions of Nginx no longer
      always initialize “r->headers_in.cookies”.

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

http://openresty.org/#ChangeLog1004001

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