After more than two weeks' active development, I'm pleased to announce the
new development version of ngx_openresty, 18.104.22.168:
Below is the complete change log for this release, as compared to the last
* upgraded LuaRestyMySQLLibrary to 0.10.
* bugfix: the MySQL "bigint" fields might overflow when
converting to lua numbers. now we no longer convert such
fields into Lua numbers and instead, just treat them as Lua
strings. thanks Lance Li for reporting this issue.
* upgraded LuaNginxModule to 0.5.11.
* feature: added new Lua API ngx.req.init_body,
ngx.req.append_body, and ngx.req.finish_body. These new
functions can be used with the existing "downstream cosocket
API" (provided by ngx.req.socket) to implement efficient
Nginx "input filters" in pure Lua. thanks Matthieu Tourne
for the patches.
* feature: added new Lua API ngx.get_phase for retrieving the
current running phase of the Lua code being executed. thanks
James Hurst for the patch.
* feature: added the first dtrace static probe:
* bugfix: the ngx.req.socket() object could not handle
pipelined requests correctly and resulted in the "400 Bad
Request" error page in some special cases. thanks Matthieu
Tourne for helping catching this bug.
* bugfix: "buffer error" would happen when the "args" option
table to ngx.location.capture (and ngx.encode_args)
contained a multi-value argument whose key also required URI
escaping. thanks Matthieu Tourne for reporting this.
* bugfix: ngx.re.gmatch() might result in segmentation faults
during nginx request cleanups if the iterator returned by
ngx.re.gmatch() was collected (by Lua GC) before request
cleanups. this bug had appeared in LuaNginxModule 0.5.0rc30
(and OpenResty 22.214.171.124). thanks Wayne for reporting this
* bugfix: 3rd-party nginx C modules that use the public C API
function, "ngx_http_lua_add_package_preload", could result
in segmentation faults at nginx server startup due to
uninitialized Lua VM pointer. thanks Ray Bejjani for
* bugfix: proper error messages were not always thrown when
the iterator returned by ngx.re.gmatch was (incorrectly)
used in the context of another nginx request.
* bugfix: fixed several Clang compilation warnings.
* feature: applied the dtrace patch to the nginx core that adds
dtrace static probing support for both the Nginx core and
3rd-party modules to the Nginx build system. this support can be
enabled by "./configure --with-dtrace-probes".
* feature: added new dtrace static probes to the Nginx core
* added 8 kinds of static probes to the subrequest mechanism:
* added 2 kinds of static probes to the standard request body
reader: "nginx:::http-read-body-abort" and
* added 2 kinds of static probes to the standard main request
header reader: "nginx:::http-read-req-line-done" and
* added 1 kind of static probes to the configuration loader:
* added the "nginx.stp" stapset script for systemtap:
* added the stap-nginx wrapper sh script for systemtap's
"stap" command for nginx. this script will be installed to
"$PREFIX/sbin/" when the "./configure" option
"--with-dtrace-probes" is specified.
* bugfix: fixed an issue regarding subrequests in
The HTML version of the change contains lots of helpful hyper-links
and can be browsed here:
Special thanks go to all our contributors and users for helping make this
OpenResty (aka. ngx_openresty) is a full-fledged web application server by
bundling the standard Nginx core, lots of 3rd-party Nginx modules, as well
as most of their external dependencies. See OpenResty's homepage for