Hello!

I am happy to announce that the new development version of
ngx_openresty, 1.2.7.3, 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.7.1:

 *   upgraded LuaNginxModule to 0.7.18.

     *   feature: implemented ngx.req.http_version() that returns the
         HTTP version number for the current request. thanks Matthieu
         Tourne for requesting this.

     *   feature: implemented the ngx.req.raw_header() function for
         returning the original raw HTTP protocol header string
         received by Nginx. thanks Matthieu Tourne for requesting
         this.

     *   feature: added new methods safe_set and safe_add to
         ngx.shared.DICT objects, which never override existing
         unexpired items but immediately return nil and a "no memory"
         string message when running out of storage. thanks Matthieu
         Tourne for requesting this.

     *   feature: datagram Unix domain sockets created by
         ngx.socket.udp() can now receive data from the other
         endpoint via "autobind" on Linux. thanks Dirk Feytons for
         the patch.

     *   change: the ngx.re.match, ngx.re.gmatch, ngx.re.sub, and
         ngx.re.gsub functions used to throw Lua exceptions
         aggressively for all the error conditions; now they just
         return an additional Lua string describing the error for
         almost all common errors instead of throwing exceptions,
         including pcre compile-time and exec-time failures. thanks
         Matthieu Tourne for requesting this change.

     *   bugfix: use of ngx.req.socket() could make socket reading
         hang infinitely when the request did not take a request body
         at all (that is, when the Content-Length request header is
         missing). thanks Matthieu Tourne for reporting this issue.

     *   bugfix: when a non-table value was specified for the "args"
         option in the ngx.location.capture or
         ngx.location.capture_multi call, memory invalid access might
         happen, which resulted in garbage data at least. thanks
         Siddon Tang for reporting this issue.

     *   bugfix: when the Lua code using UDP/TCP cosockets + resolver
         was run in a subrequest, the subrequest could hang due to
         missing calls to "ngx_http_run_posted_requests" in the
         UDP/TCP cosocket resolver handler. thanks Lanshun Zhou for
         reporting this issue.

     *   bugfix: ngx.socket.udp: memory leaks or invalid memory
         accesses might happen when the DNS resolver failed to
         resolve.

     *   bugfix: rewrite_by_lua_no_postpone can only work globally
         and did not reject contexts like "server" and "location"
         configuration blocks. thanks Matthieu Tourne for reporting
         this issue.

     *   bugfix: (large) in-file request bodies could not be
         inherited correctly by multiple subrequests issued by
         ngx.location.capture. thanks Matthieu Tourne for reporting
         this issue.

     *   bugfix: ngx.req.get_headers(limit, true) would still return
         header names in the pure lower-case form when the "limit"
         argument was an integer. thanks Matthieu Tourne for
         reporting this issue.

     *   bugfix: ngx.re.match: when the "D" regular expression option
         was specified, an empty Lua table would always be created
         even when the named capture was actually empty. thanks
         Matthieu Tourne for reporting this issue.

     *   docs: made it explicit that redirecting to external domains
         is also supported in ngx.redirect(). thanks Ron Gomes for
         asking.

 *   upgraded EchoNginxModule to 0.44.

     *   bugfix: $echo_client_request_headers was evaluated to only
         the last part of the request header when "large header
         buffers" were used.

     *   change: preserve the trailing "CR LF" at the end of the
         whole HTTP protocol header returned by
         $echo_client_request_headers.

 *   upgraded Redis2NginxModule to 0.10.

     *   feature: allow use of the request body data in Nginx
         variables for main requests by always reading the request
         body automatically; we used to always discard the request
         body just like the standard ngx_memcached module. thanks
         Ristona Hua for sharing this usage.

     *   docs: updated the docs for the limitations on Redis pub/sub.
         thanks LazyZhu for pointing out the potential confusions.

     *   docs: now we recommend LuaRestyRedisLibrary instead when
         being used with LuaNginxModule.

 *   upgraded LuaRestyUploadLibrary to 0.08.

     *   bugfix: when multiple "Content-Type" request headers were
         given, a Lua exception would be thrown; now we just pick up
         the first one.

     *   docs: better error handling in the code sample. thanks
         wgm.china for the report.

 *   feature: applied the variables_in_redis_pass patch to
     RedisNginxModule 0.3.6 to allow use of Nginx variables in the
     redis_pass directive. thanks Diptamay Sanyal for requesting this
     feature.

 *   bugfix: applied Lanshun Zhou's run_posted_requests_in_resolver
     patch to the Nginx core:
     <http://mailman.nginx.org/pipermail/nginx-devel/2013-March/003476.html>

 *   bugfix: applied the official hotfix #1 patch for the bundled
     LuaJIT 2.0.1.

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

    http://openresty.org/#ChangeLog1002007

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

Enjoy!
-agentzh
    春哥:
    1.2.7.3版本中增加了websocket了吗?一直期待着这一个划时代的功能。
     
    2013-03-25

    wgm.china

    发件人:agentzh
    发送时间:2013-03-25 15:06
    主题:[openresty] [ANN] ngx_openresty devel version 1.2.7.3 released
    收件人:"nginx"<nginx@nginx.org>,"openresty"<openresty@googlegroups.com>,"openresty-en"<openresty-en@googlegroups.com>
    抄送:
     
    Hello! 
     
    I am happy to announce that the new development version of 
    ngx_openresty, 1.2.7.3, 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.7.1: 
     
     *   upgraded LuaNginxModule to 0.7.18. 
     
         *   feature: implemented ngx.req.http_version() that returns the 
             HTTP version number for the current request. thanks Matthieu 
             Tourne for requesting this. 
     
         *   feature: implemented the ngx.req.raw_header() function for 
             returning the original raw HTTP protocol header string 
             received by Nginx. thanks Matthieu Tourne for requesting 
             this. 
     
         *   feature: added new methods safe_set and safe_add to 
             ngx.shared.DICT objects, which never override existing 
             unexpired items but immediately return nil and a "no memory" 
             string message when running out of storage. thanks Matthieu 
             Tourne for requesting this. 
     
         *   feature: datagram Unix domain sockets created by 
             ngx.socket.udp() can now receive data from the other 
             endpoint via "autobind" on Linux. thanks Dirk Feytons for 
             the patch. 
     
         *   change: the ngx.re.match, ngx.re.gmatch, ngx.re.sub, and 
             ngx.re.gsub functions used to throw Lua exceptions 
             aggressively for all the error conditions; now they just 
             return an additional Lua string describing the error for 
             almost all common errors instead of throwing exceptions, 
             including pcre compile-time and exec-time failures. thanks 
             Matthieu Tourne for requesting this change. 
     
         *   bugfix: use of ngx.req.socket() could make socket reading 
             hang infinitely when the request did not take a request body 
             at all (that is, when the Content-Length request header is 
             missing). thanks Matthieu Tourne for reporting this issue. 
     
         *   bugfix: when a non-table value was specified for the "args" 
             option in the ngx.location.capture or 
             ngx.location.capture_multi call, memory invalid access might 
             happen, which resulted in garbage data at least. thanks 
             Siddon Tang for reporting this issue. 
     
         *   bugfix: when the Lua code using UDP/TCP cosockets + resolver 
             was run in a subrequest, the subrequest could hang due to 
             missing calls to "ngx_http_run_posted_requests" in the 
             UDP/TCP cosocket resolver handler. thanks Lanshun Zhou for 
             reporting this issue. 
     
         *   bugfix: ngx.socket.udp: memory leaks or invalid memory 
             accesses might happen when the DNS resolver failed to 
             resolve. 
     
         *   bugfix: rewrite_by_lua_no_postpone can only work globally 
             and did not reject contexts like "server" and "location" 
             configuration blocks. thanks Matthieu Tourne for reporting 
             this issue. 
     
         *   bugfix: (large) in-file request bodies could not be 
             inherited correctly by multiple subrequests issued by 
             ngx.location.capture. thanks Matthieu Tourne for reporting 
             this issue. 
     
         *   bugfix: ngx.req.get_headers(limit, true) would still return 
             header names in the pure lower-case form when the "limit" 
             argument was an integer. thanks Matthieu Tourne for 
             reporting this issue. 
     
         *   bugfix: ngx.re.match: when the "D" regular _expression_ option 
             was specified, an empty Lua table would always be created 
             even when the named capture was actually empty. thanks 
             Matthieu Tourne for reporting this issue. 
     
         *   docs: made it explicit that redirecting to external domains 
             is also supported in ngx.redirect(). thanks Ron Gomes for 
             asking. 
     
     *   upgraded EchoNginxModule to 0.44. 
     
         *   bugfix: $echo_client_request_headers was evaluated to only 
             the last part of the request header when "large header 
             buffers" were used. 
     
         *   change: preserve the trailing "CR LF" at the end of the 
             whole HTTP protocol header returned by 
             $echo_client_request_headers. 
     
     *   upgraded Redis2NginxModule to 0.10. 
     
         *   feature: allow use of the request body data in Nginx 
             variables for main requests by always reading the request 
             body automatically; we used to always discard the request 
             body just like the standard ngx_memcached module. thanks 
             Ristona Hua for sharing this usage. 
     
         *   docs: updated the docs for the limitations on Redis pub/sub. 
             thanks LazyZhu for pointing out the potential confusions. 
     
         *   docs: now we recommend LuaRestyRedisLibrary instead when 
             being used with LuaNginxModule. 
     
     *   upgraded LuaRestyUploadLibrary to 0.08. 
     
         *   bugfix: when multiple "Content-Type" request headers were 
             given, a Lua exception would be thrown; now we just pick up 
             the first one. 
     
         *   docs: better error handling in the code sample. thanks 
             wgm.china for the report. 
     
     *   feature: applied the variables_in_redis_pass patch to 
         RedisNginxModule 0.3.6 to allow use of Nginx variables in the 
         redis_pass directive. thanks Diptamay Sanyal for requesting this 
         feature. 
     
     *   bugfix: applied Lanshun Zhou's run_posted_requests_in_resolver 
         patch to the Nginx core: 
         <http://mailman.nginx.org/pipermail/nginx-devel/2013-March/003476.html> 
     
     *   bugfix: applied the official hotfix #1 patch for the bundled 
         LuaJIT 2.0.1. 
     
    The HTML version of the change log with some helpful hyper-links can 
    be browsed here: 
     
        http://openresty.org/#ChangeLog1002007 
     
    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 
     
    Enjoy! 
    -agentzh 
     
    --  
    --  
    邮件来自列表“openresty”,专用于技术讨论! 
    订阅: 请发空白邮件到 openresty+subscribe@googlegroups.com 
    发言: 请发邮件到 openresty@googlegroups.com 
    退订: 请发邮件至 openresty+unsubscribe@googlegroups.com 
    归档: http://groups.google.com/group/openresty 
    官网: http://openresty.org/ 
    仓库: https://github.com/agentzh/ngx_openresty 
    教程: http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html 
     
     
      Hello!
      
      On Mon, Mar 25, 2013 at 12:21 AM, wgm.china wrote:
      > 1.2.7.3版本中增加了websocket了吗?一直期待着这一个划时代的功能。
      >
      
      还没有。慢慢来哈,呵呵。
      
      Best regards,
      -agentzh
      
        12 days later
        Hi all,

        If anyone has a need for ubuntu packages for the nginx openresty bundle and would like to help test them out etc.

        https://launchpad.net/~nginx-openresty/+archive/development/+packages

        all the bundle dependencies have packages, (lua/luajit 2.1.0 + hotfix patch, lua-resty*, etc...)

        * Known issues:
           "Server" header still says 1.2.7.1 but is actually 1.2.7.3
           lua-cjson is 2.1.0 and not 1.0.3 (not sure if thats a real issue) agentzh?
           luajit is mandatory ( also not sure if thats a real issue seeing as it's out of BETA)
           The compiled modules for the package nginx-openresty are quite numerous, we could add some additional targets, (nginx-openresty-light/full/...)   


        Regards,

        Bearnard.


        On Monday, March 25, 2013 12:06:50 AM UTC-7, agentzh wrote:
        Hello!

        I am happy to announce that the new development version of
        ngx_openresty, 1.2.7.3, 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.7.1:

         *   upgraded LuaNginxModule to 0.7.18.

             *   feature: implemented ngx.req.http_version() that returns the
                 HTTP version number for the current request. thanks Matthieu
                 Tourne for requesting this.

             *   feature: implemented the ngx.req.raw_header() function for
                 returning the original raw HTTP protocol header string
                 received by Nginx. thanks Matthieu Tourne for requesting
                 this.

             *   feature: added new methods safe_set and safe_add to
                 ngx.shared.DICT objects, which never override existing
                 unexpired items but immediately return nil and a "no memory"
                 string message when running out of storage. thanks Matthieu
                 Tourne for requesting this.

             *   feature: datagram Unix domain sockets created by
                 ngx.socket.udp() can now receive data from the other
                 endpoint via "autobind" on Linux. thanks Dirk Feytons for
                 the patch.

             *   change: the ngx.re.match, ngx.re.gmatch, ngx.re.sub, and
                 ngx.re.gsub functions used to throw Lua exceptions
                 aggressively for all the error conditions; now they just
                 return an additional Lua string describing the error for
                 almost all common errors instead of throwing exceptions,
                 including pcre compile-time and exec-time failures. thanks
                 Matthieu Tourne for requesting this change.

             *   bugfix: use of ngx.req.socket() could make socket reading
                 hang infinitely when the request did not take a request body
                 at all (that is, when the Content-Length request header is
                 missing). thanks Matthieu Tourne for reporting this issue.

             *   bugfix: when a non-table value was specified for the "args"
                 option in the ngx.location.capture or
                 ngx.location.capture_multi call, memory invalid access might
                 happen, which resulted in garbage data at least. thanks
                 Siddon Tang for reporting this issue.

             *   bugfix: when the Lua code using UDP/TCP cosockets + resolver
                 was run in a subrequest, the subrequest could hang due to
                 missing calls to "ngx_http_run_posted_requests" in the
                 UDP/TCP cosocket resolver handler. thanks Lanshun Zhou for
                 reporting this issue.

             *   bugfix: ngx.socket.udp: memory leaks or invalid memory
                 accesses might happen when the DNS resolver failed to
                 resolve.

             *   bugfix: rewrite_by_lua_no_postpone can only work globally
                 and did not reject contexts like "server" and "location"
                 configuration blocks. thanks Matthieu Tourne for reporting
                 this issue.

             *   bugfix: (large) in-file request bodies could not be
                 inherited correctly by multiple subrequests issued by
                 ngx.location.capture. thanks Matthieu Tourne for reporting
                 this issue.

             *   bugfix: ngx.req.get_headers(limit, true) would still return
                 header names in the pure lower-case form when the "limit"
                 argument was an integer. thanks Matthieu Tourne for
                 reporting this issue.

             *   bugfix: ngx.re.match: when the "D" regular _expression_ option
                 was specified, an empty Lua table would always be created
                 even when the named capture was actually empty. thanks
                 Matthieu Tourne for reporting this issue.

             *   docs: made it explicit that redirecting to external domains
                 is also supported in ngx.redirect(). thanks Ron Gomes for
                 asking.

         *   upgraded EchoNginxModule to 0.44.

             *   bugfix: $echo_client_request_headers was evaluated to only
                 the last part of the request header when "large header
                 buffers" were used.

             *   change: preserve the trailing "CR LF" at the end of the
                 whole HTTP protocol header returned by
                 $echo_client_request_headers.

         *   upgraded Redis2NginxModule to 0.10.

             *   feature: allow use of the request body data in Nginx
                 variables for main requests by always reading the request
                 body automatically; we used to always discard the request
                 body just like the standard ngx_memcached module. thanks
                 Ristona Hua for sharing this usage.

             *   docs: updated the docs for the limitations on Redis pub/sub.
                 thanks LazyZhu for pointing out the potential confusions.

             *   docs: now we recommend LuaRestyRedisLibrary instead when
                 being used with LuaNginxModule.

         *   upgraded LuaRestyUploadLibrary to 0.08.

             *   bugfix: when multiple "Content-Type" request headers were
                 given, a Lua exception would be thrown; now we just pick up
                 the first one.

             *   docs: better error handling in the code sample. thanks
                 wgm.china for the report.

         *   feature: applied the variables_in_redis_pass patch to
             RedisNginxModule 0.3.6 to allow use of Nginx variables in the
             redis_pass directive. thanks Diptamay Sanyal for requesting this
             feature.

         *   bugfix: applied Lanshun Zhou's run_posted_requests_in_resolver
             patch to the Nginx core:
             <http://mailman.nginx.org/pipermail/nginx-devel/2013-March/003476.html>

         *   bugfix: applied the official hotfix #1 patch for the bundled
             LuaJIT 2.0.1.

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

            http://openresty.org/#ChangeLog1002007

        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

        Enjoy!
        -agentzh
          Hello!
          
          On Fri, Apr 5, 2013 at 7:02 PM, Bearnard Hibbins wrote:
          > * Known issues:
          >    "Server" header still says 1.2.7.1 but is actually 1.2.7.3
          
          I cannot reproduce it on my side:
          
              $ curl -i localhost/lua
              HTTP/1.1 200 OK
              Server: ngx_openresty/1.2.7.3
              Date: Sat, 06 Apr 2013 05:13:54 GMT
              Content-Type: application/octet-stream
              Transfer-Encoding: chunked
              Connection: keep-alive
          
              LuaJIT 2.0.1
          
          Are you sure you're using the new nginx executable? Please note that
          "HUP reload" will not update the nginx executable.
          
          >    lua-cjson is 2.1.0 and not 1.0.3 (not sure if thats a real issue)
          
          I doubt.
          
          Regards,
          -agentzh
          
            Write a Reply...