Compare commits

..

127 Commits

Author SHA1 Message Date
90fc91567f bumped version to 1.11.2.5; also updated tests to reflect recent changes. 2017-08-17 21:23:02 -07:00
a0f6653c6a bumped version to 1.11.2.5 RC1. 2017-08-08 22:28:36 -07:00
61586a75e3 upgraded resty-cli to 0.19. 2017-08-08 22:28:12 -07:00
9d36d4f069 bugfix: do not abort make install when copying COPYRIGHT fails (the destination could be the same file on Windows, for example). 2017-08-08 20:17:18 -07:00
b1a85d924b upgraded ngx_lua to 0.10.10. 2017-08-08 19:53:38 -07:00
6994c5e125 upgraded lua-resty-lrucache to 0.07. 2017-08-08 15:48:03 -07:00
2f20dac034 upgraded lua-resty-dns to 0.19. 2017-08-08 15:43:32 -07:00
098889b2ed swtched to OpenResty's own fork of ngx_postgres; also upgraded it to 1.0. 2017-08-08 15:33:09 -07:00
7a9c09de5d upgraded ngx_echo to 0.61. 2017-08-08 15:16:59 -07:00
22d66022a6 upgraded lua-resty-mysql to 0.20. 2017-08-08 15:13:25 -07:00
e2c0799394 upgraded lua-resty-lock to 0.07. 2017-08-08 12:58:43 -07:00
44540173ea upgraded lua-resty-string to 0.10. 2017-08-08 12:47:48 -07:00
843c260daf upgraded ngx_lua_upstream to 0.07 and lua-resty-upstream-healthcheck to 0.05. 2017-08-08 12:45:30 -07:00
a864af25cf upgraded LuaJIT to 2.1-20170808, resty-cli to 0.18, and lua-resty-core to 0.1.12. 2017-08-08 12:41:12 -07:00
a21f5e4631 upgraded ngx_lua to 0.10.9. 2017-08-08 12:27:24 -07:00
b0b9544aa5 upgraded lua-resty-limit-traffic to 0.04. 2017-08-08 12:07:39 -07:00
3e69abf93c upgraded ngx_echo to 0.61rc1. 2017-08-05 15:41:49 -07:00
c408e5f68f upgraded ngx_lua to 0.10.9rc9. 2017-08-04 17:43:17 -07:00
2223edb87d misc: added templates for issue and pull request.
Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
2017-07-25 14:57:32 -07:00
adcff66454 feature: applied a patch to the nginx core to make the nginx variable $proxy_add_x_forwarded_for accessible on Lua land.
Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
2017-07-16 10:51:28 -07:00
68fdc6754b COPYRIGHT: added licenses of openssl, zlib, and pcre. 2017-07-12 16:02:02 -07:00
645530f76e upgraded resty-cli to 0.18rc6. 2017-07-12 15:30:03 -07:00
24a6779879 upgraded lua-resty-dns to 0.19rc1. 2017-07-12 15:29:01 -07:00
9fcae3552f upgraded lua-resty-core to 0.1.12rc8. 2017-07-12 15:27:31 -07:00
47907fa3a9 upgraded ngx_lua to 0.10.9rc8. 2017-07-12 15:26:09 -07:00
f9a2702f5a merged openresty 1.11.2.4. 2017-07-11 13:25:01 -07:00
58f39e963f bugfix: applied nginx's official security fix for an issue in the range filter (CVE-2017-7529). 2017-07-11 13:24:06 -07:00
19c6e1fb5c bugfix: applied nginx's official security fix for an issue in the range filter (CVE-2017-7529). 2017-07-11 10:31:25 -07:00
11284ae527 doc: mentions the mercurial dep. 2017-07-06 12:10:37 -07:00
cf01381428 plus: install the COPYRIGHT file as well. 2017-07-02 20:10:44 -07:00
7447076d56 re-formated the COPYRIGHT file. 2017-07-02 20:10:26 -07:00
4f54490595 upgraded lua-resty-limit-traffic to 0.04rc1. 2017-06-30 22:50:34 -07:00
3b500d7c96 upgraded ngx_lua to 0.10.9rc7 and lua-resty-core to 0.1.12rc7. 2017-06-30 22:48:37 -07:00
3b74625ad3 feature: added the balancer_status_code patch to the nginx core to allow returning arbitrary HTTP status codes inside upstream balancers.
Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
2017-06-28 10:48:48 -07:00
b1400169a7 minor fixes in dist-check. 2017-06-26 22:14:20 -07:00
bc2068420c feature: we now search LuaJIT bytecode files .ljbc before Lua source files *.lua in the default Lua module search paths. 2017-06-26 22:03:02 -07:00
b81a5cea66 bugfix: ./configure: the --without-http_lua_upstream option alone incorrectly disabled all the Lua stuff. 2017-06-26 14:17:43 -07:00
add30287e1 change: applied a patch to the nginx core to turn nginx to openresty in the builtin special response pages' footer.
Thanks Datong Sun for the patch.
2017-06-23 14:33:08 -07:00
ce30f58339 upgraded ngx_lua to 0.10.9rc6. 2017-06-17 19:09:40 -07:00
6e74463f66 optimize: privileged agent: reduced the number of ngx_connection_t allocated inside the privileged worker to avoid excessive memory consumption when worker_connections is set very high.
Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
2017-06-17 15:05:57 -07:00
79520a30f8 upgraded lua-resty-core to v0.1.12rc6. 2017-06-09 13:25:42 -07:00
5426551809 upgraded lua-resty-mysql to 0.20rc1. 2017-05-30 15:01:52 -07:00
bcb9b3b698 upgraded ngx_upstream_lua to 0.07rc1; upgraded lua-resty-string to 0.10rc1; upgraded lua-resty-lock to 0.07rc1; upgraded lua-resty-core to 0.1.12rc5. 2017-05-27 18:11:21 -07:00
9afb06f5eb upgraded resty-cli to 0.18rc5. 2017-05-19 13:33:18 -07:00
d94772353a upgraded LuaJIT to v2.1-20170517. 2017-05-17 18:14:29 -07:00
d7da4d6037 upgraded ngx_lua to 0.10.9rc5. 2017-05-15 00:14:22 -07:00
4950ec7f62 feature: applied the delayed-posted-events patch to the nginx core for adding "delayed posted events" which run in the next event cycle with 0 delay.
this nginx core feature is needed by the ngx.sleep(0) feature in
ngx_lua, for example.

Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
2017-05-14 22:29:31 -07:00
706dee9b7f bumped version to 1.11.2.4 rc0.3. 2017-05-14 21:28:04 -07:00
5373add959 upgraded resty-cli to 0.18rc4. 2017-05-14 17:10:27 -07:00
a5baad4b83 upgraded lua-resty-core to 0.1.12rc4. 2017-05-14 17:09:04 -07:00
0ed12d446c upgraded ngx_lua to 0.10.9rc4. 2017-05-14 17:08:01 -07:00
ec8acae28e bugfix: applied the single_process_graceful_exit patch to the nginx core to fix the issue that nginx fails to perform graceful exit when master_process is turned off. 2017-05-14 10:43:57 -07:00
0ca75dbf45 upgraded resty-cli to 0.18rc3. 2017-05-13 20:50:03 -07:00
e6152d3af4 upgraded resty-cli to 0.18rc2. 2017-05-13 20:07:16 -07:00
1780a1dd5f upgraded lua-resty-core to 0.1.12rc3. 2017-05-13 19:38:57 -07:00
509afa3d53 upgraded ngx_lua to 0.10.9rc3. 2017-05-13 19:38:08 -07:00
274808af32 upgraded resty-cli to 0.18rc1. 2017-05-13 17:20:19 -07:00
6e8b2f4984 doc: updated the LuaJIT restydoc indexes to the latest version.
also upgraded LuaJIT to v2.1-20170513.
2017-05-13 16:37:26 -07:00
6b905f9eef bumped version to 1.11.2.4 RC0.1. 2017-05-13 16:28:45 -07:00
12b67e3a5c upgraded lua-resty-core to 0.1.12rc2. 2017-05-13 16:27:31 -07:00
7d5dd68ded upgraded ngx_lua to 0.10.9rc2. 2017-05-13 16:26:12 -07:00
7a7576319e feature: applied the intercept_error_log patch to the nginx core to provide 3rd-party modules a hook to intercept nginx error log data without touching files.
3rd-party modules can register a custom interception hook to ngx_http_core_main_conf_t.intercept_log_handler.

Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
2017-05-12 13:25:36 -07:00
e767256038 upgraded ngx_lua to 0.10.9rc1 and lua-resty-core to 0.1.12rc1. 2017-05-12 11:02:19 -07:00
a8ea810fdc feature: ./configure: the user flags specified by the --with-luajit-xcflags=FLAGS option are not appended to the default flags instead of being prepended. thanks spacewander for the report in #256. 2017-05-06 17:38:10 -07:00
dafd10b27d fixed the tests to reflect recent changes. 2017-05-06 17:18:11 -07:00
eb8fc7771d bugfix: the feature test for SSE 4.2 support did not really check if the local CPU indeed has it.
Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
2017-05-06 17:12:07 -07:00
79dc3c56aa feature: applied a small patch to the nginx core to add support for the "privileged agent" process which is run by the same system account as the master.
Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
2017-05-05 18:12:47 -07:00
391709ce4d formal release 1.11.2.3. 2017-04-19 17:00:51 -07:00
78af48d106 build-win32.sh: added comments for dep download links. 2017-04-08 19:20:30 -07:00
34c5e749b7 upgraded lua-redis-parser to 0.13. 2017-04-08 17:55:43 -07:00
5deaa06788 dist-check: removed the -l option for standard Lua 5.1 intepreter. 2017-04-08 17:33:54 -07:00
1fbcf153e3 change: we no longer bundle the standard Lua 5.1 interpreter. 2017-04-08 17:33:18 -07:00
da979a620a updated tests to reflect recent changes. 2017-04-08 17:25:27 -07:00
e75b5c926b upgraded ngx_redis2 to 0.14. 2017-04-08 16:02:38 -07:00
0a35dfc126 upgraded ngx_memc to 0.18. 2017-04-08 15:58:38 -07:00
88b4cf1abf upgraded resty-cli to 0.17. 2017-04-08 15:53:28 -07:00
51d68caaed upgraded lua-resty-lock to 0.06. 2017-04-08 15:43:30 -07:00
2a1b28da1c upgraded lua-resty-core to 0.1.11. 2017-04-08 15:40:49 -07:00
ba4d3dd99f upgraded lua-resty-lrucache to 0.06. 2017-04-08 15:36:35 -07:00
ec3186ccc9 upgraded lua-resty-mysql to 0.19. 2017-04-08 15:28:32 -07:00
e1cfbe09ab upgraded lua-resty-limit-traffic to 0.03. 2017-04-08 15:25:01 -07:00
8caa177718 upgraded opm to 0.0.3. 2017-04-08 15:19:07 -07:00
d00f1e1ef0 upgraded lua-resty-limit-traffic to 0.02. 2017-04-08 15:07:00 -07:00
ba6621b12b doc: updated LuaJIT's docs to the latest version for the restydoc indexes. 2017-04-08 15:04:55 -07:00
df41967474 bumped version to 1.11.2.3rc0. 2017-04-08 15:02:41 -07:00
2fd117c427 upgraded lua-resty-mysql to 0.18. 2017-04-08 15:01:34 -07:00
cfc14f5d26 upgraded lua-cjson to 2.1.0.5. 2017-04-08 14:28:11 -07:00
1197fe2bd1 upgraded lua-resty-core to 0.1.10.
upgraded lua-resty-lock to 0.05.

upgraded ngx_lua to 0.10.8.

upgraded ngx_drizzle to 0.1.10.
2017-04-08 14:25:57 -07:00
b0654629a9 upgraded lua-resty-lrucache to 0.05. 2017-04-08 13:46:50 -07:00
4fb4791107 upgraded LuaJIT to 2.1-20170405. 2017-04-08 12:04:51 -07:00
6b82ea1099 feature: now we automatically add the -msse4.2 compilation option for building the bundled LuaJIT when it is available. 2017-03-19 22:21:11 -07:00
b59ef879a5 win32: upgraded PCRE, zlib, and OpenSSL to their latest releases. 2017-03-19 21:15:52 -07:00
2044681992 dist-check: made the output a bit nicer. 2017-03-19 21:15:31 -07:00
ee90152ae3 bugfix: we did not use PATH in ./configure --sbin-path=PATH when creating symlinks.
this fixes #196.

Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
2017-02-13 15:09:10 -08:00
7a5c96d72f bugfix: default index.html: missing </p>.
Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
2016-12-28 17:13:31 -08:00
b490cfeea4 feature: applied the safe_resolver_ipv6_option patch to the nginx core to avoid the 'ipv6=off' option to be parsed by nginx when it is not built with IPv6 support.
Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
2016-12-26 22:14:59 -08:00
b1c4280777 README-win32: updated to reflect recent changes in OpenSSL versions. 2016-12-19 11:24:37 -08:00
710d9e323d updated the copyright notice. 2016-12-19 11:21:52 -08:00
1ad7b03044 win32-README: updated the link to openresty.org. 2016-12-19 11:19:43 -08:00
b6c362bbf6 doc: updated copyright notice. 2016-12-18 14:45:13 -08:00
b03099b386 bumped version to 1.11.2.2. 2016-11-17 14:26:08 -08:00
cbfbd19460 updated tests to reflect recent changes. 2016-11-13 10:16:57 -08:00
e921c6e9b1 added more tests to dist-check. 2016-11-13 10:15:47 -08:00
365c7d9d9e upgraded resty-cli to 0.16. 2016-11-13 10:11:26 -08:00
5d01a5e0b4 upgraded opm to 0.0.2. 2016-11-13 09:59:50 -08:00
e478681308 upgraded resty-cli to 0.15. 2016-11-13 09:59:03 -08:00
e254c3d0c1 change: now we enable -DLUAJIT_ENABLE_LUA52COMPAT in our bundled LuaJIT build by default, which can be disabled by ./configure --without-luajit-lua52. 2016-11-13 08:18:06 -08:00
dbccee1418 updated tests to reflect recent changes. 2016-11-04 15:32:50 -07:00
efe10e532c added new command-line utility, opm, for managing community contributed OpenResty packages. 2016-11-04 15:12:14 -07:00
6343d26c17 upgraded resty-cli to 0.14. 2016-11-04 15:05:49 -07:00
8ffd932b20 added lua-resty-limit-traffic. 2016-11-04 15:00:22 -07:00
6cb4ae0de3 upgraded lua-resty-mysql to 0.17. 2016-11-04 14:49:09 -07:00
6c8f4f87ba upgraded lua-resty-upload to 0.10. 2016-11-04 14:09:52 -07:00
d7f84c9079 upgraded lua-resty-websocket to 0.06. 2016-11-04 14:06:31 -07:00
4f2bf44aba upgraded lua-resty-dns to 0.18. 2016-11-04 14:02:29 -07:00
a4640d68f1 upgraded lua-resty-redis to 0.26. 2016-11-04 13:58:42 -07:00
69803153aa upgraded ngx_headers_more to 0.32. 2016-11-04 13:55:31 -07:00
b488540a2f upgraded lua-resty-core to 0.1.9. 2016-11-04 13:47:11 -07:00
b37d406423 win32: upgraded OpenSSL to 1.0.2j. 2016-11-04 12:28:36 -07:00
dc03e7641b upgraded ngx_lua to 0.10.7. 2016-11-04 12:10:00 -07:00
2900286149 upgraded LuaJIT to 2.1-20161104. 2016-11-04 12:08:16 -07:00
b1c3587c50 updated tests to reflect recent changes. 2016-11-02 15:19:24 -07:00
5163293260 make install: now we also create directories <prefix>/site/pod/ and <prefix>/site/manifest/. 2016-11-02 15:19:06 -07:00
1815637613 doc: updated README-win32.md to reflect recent changes. 2016-08-26 14:35:19 -07:00
fd667d6369 updated the help text of ./configure --help to sync with the new nginx 1.11.2 core. 2016-08-26 13:35:04 -07:00
ae8e36ae77 fixed test suite to reflect recent changes. 2016-08-26 13:34:20 -07:00
e2a735c481 win32: enabled http v2, addition, gzip static, sub, and several more standard nginx modules. 2016-08-26 13:16:54 -07:00
35 changed files with 3996 additions and 2558 deletions

26
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,26 @@
This place is for bug reports and development discussions only. For general questions and
discussions, please join the openresty-en mailing list instead: https://groups.google.com/group/openresty-en.
If you want to use Chinese, please join the openresty (Chinese) mailing list instead: https://groups.google.com/group/openresty.
Do not use Chinese in this place.
Before you open a new issue, please search the internet and make sure it is not duplicate.
Ensure you have provided the following details while reporting a problem:
- [ ] The exact version of the related software, including but not limited to the OpenResty version
(if any), the NGINX core version, the `ngx_lua` module version(via `openresty -V` or `nginx -V`),
and your operating system version(via `uname -a`).
- [ ] **A minimal and standalone test case** that others can easily run on their side and
reproduce the issue you are seeing.
- [ ] Do not simply say "something is broken" or "something does not work". Always provide
as much details as possible. Always describe **the symptoms and your expected results**.
You can (temporarily) enable the nginx debugging logs to see the internal workings
of NGINX in your nginx''s `error.log` file. See http://nginx.org/en/docs/debugging_log.html
The same instructions apply equally well to OpenResty.
If you are seeing crashes, please provide the full backtrace for the crash. See
https://www.nginx.com/resources/wiki/start/topics/tutorials/debugging/#core-dump
for more details.
Thanks for your cooperation.

2
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,2 @@
I hereby granted the copyright of the changes in this pull request
to the authors of this openresty project.

325
COPYRIGHT
View File

@ -1,6 +1,7 @@
Copyright (C) 2009-2015, by Yichun "agentzh" Zhang, CloudFlare Inc.
Copyright (C) 2009-2015, by Yichun "agentzh" Zhang, OpenResty Inc.
Copyright (C) 2009-2014, by Xiaozhe Wang (chaoslawful) <chaoslawful@gmail.com>.
Copyright (C) 2009-2014, by Xiaozhe Wang (chaoslawful) <chaoslawful@gmail.
com>.
Copyright (C) 2010-2014, by FRiCKLE Piotr Sikora <info@frickle.com>.
@ -12,19 +13,34 @@ Copyright (C) Guanlan Dai
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
Copyright (c) 2010, Marcus Clyne, Simpl (simpl.it)
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
@ -35,15 +51,18 @@ modification, are permitted provided that the following conditions are met:
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL MARCUS CLYNE OR SIMPL BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-----------------------------------------------------------------------------
@ -107,22 +126,29 @@ LuaJIT -- a Just-In-Time Compiler for Lua. http://luajit.org/
Copyright (C) 2005-2015 Mike Pall. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Permission is hereby granted, free of charge, to any person obtaining a
copy
of this software and associated documentation files (the "Software"), to
deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
The above copyright notice and this permission notice shall be included
in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN
THE SOFTWARE.
[ MIT license: http://www.opensource.org/licenses/mit-license.php ]
@ -133,22 +159,29 @@ Lua License
Copyright (C) 1994-2012 Lua.org, PUC-Rio.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Permission is hereby granted, free of charge, to any person obtaining a
copy
of this software and associated documentation files (the "Software"), to
deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
The above copyright notice and this permission notice shall be included
in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN
THE SOFTWARE.
-----------------------------------------------------------------------------
@ -232,6 +265,250 @@ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
The licence and distribution terms for any publically available version
or
derivative of this code cannot be changed. i.e. this code cannot simply
be
copied and put under another distribution licence
-----------------------------------------------------------------------------
OpenSSL
Copyright (c) 1998-2016 The OpenSSL Project. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
3. All advertising materials mentioning features or use of this
software must display the following acknowledgment:
"This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
endorse or promote products derived from this software without
prior written permission. For written permission, please contact
openssl-core@openssl.org.
5. Products derived from this software may not be called "OpenSSL"
nor may "OpenSSL" appear in their names without prior written
permission of the OpenSSL Project.
6. Redistributions of any form whatsoever must retain the following
acknowledgment:
"This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit (http://www.openssl.org/)"
THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE.
This product includes cryptographic software written by Eric Young
(eay@cryptsoft.com). This product includes software written by Tim
Hudson (tjh@cryptsoft.com).
Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
All rights reserved.
This package is an SSL implementation written
by Eric Young (eay@cryptsoft.com).
The implementation was written so as to conform with Netscapes SSL.
This library is free for commercial and non-commercial use as long as
the following conditions are aheared to. The following conditions
apply to all code found in this distribution, be it the RC4, RSA,
lhash, DES, etc., code; not just the SSL code. The SSL documentation
included with this distribution is covered by the same copyright terms
except that the holder is Tim Hudson (tjh@cryptsoft.com).
Copyright remains Eric Young's, and as such any Copyright notices in
the code are not to be removed.
If this package is used in a product, Eric Young should be given attribution
as the author of the parts of the library used.
This can be in the form of a textual message at program startup or
in documentation (online or textual) provided with the package.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this software
must display the following acknowledgement:
"This product includes cryptographic software written by
Eric Young (eay@cryptsoft.com)"
The word 'cryptographic' can be left out if the rouines from the library
being used are not cryptographic related :-).
4. If you include any Windows specific code (or a derivative thereof) from
the apps directory (application code) you must include an acknowledgement:
"This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
The licence and distribution terms for any publically available version or
derivative of this code cannot be changed. i.e. this code cannot simply be
copied and put under another distribution licence
[including the GNU Public Licence.]
-----------------------------------------------------------------------------
PCRE LICENCE
------------
PCRE is a library of functions to support regular expressions whose syntax
and semantics are as close as possible to those of the Perl 5 language.
Release 8 of PCRE is distributed under the terms of the "BSD" licence, as
specified below. The documentation for PCRE, supplied in the "doc"
directory, is distributed under the same terms as the software itself. The data
in the testdata directory is not copyrighted and is in the public domain.
The basic library functions are written in C and are freestanding. Also
included in the distribution is a set of C++ wrapper functions, and a
just-in-time compiler that can be used to optimize pattern matching. These
are both optional features that can be omitted when the library is built.
THE BASIC LIBRARY FUNCTIONS
---------------------------
Written by: Philip Hazel
Email local part: ph10
Email domain: cam.ac.uk
University of Cambridge Computing Service,
Cambridge, England.
Copyright (c) 1997-2017 University of Cambridge
All rights reserved.
PCRE JUST-IN-TIME COMPILATION SUPPORT
-------------------------------------
Written by: Zoltan Herczeg
Email local part: hzmester
Emain domain: freemail.hu
Copyright(c) 2010-2017 Zoltan Herczeg
All rights reserved.
STACK-LESS JUST-IN-TIME COMPILER
--------------------------------
Written by: Zoltan Herczeg
Email local part: hzmester
Emain domain: freemail.hu
Copyright(c) 2009-2017 Zoltan Herczeg
All rights reserved.
THE C++ WRAPPER FUNCTIONS
-------------------------
Contributed by: Google Inc.
Copyright (c) 2007-2012, Google Inc.
All rights reserved.
THE "BSD" LICENCE
-----------------
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the University of Cambridge nor the name of Google
Inc. nor the names of their contributors may be used to endorse or
promote products derived from this software without specific prior
written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-----------------------------------------------------------------------------
zlib
(C) 1995-2013 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Jean-loup Gailly Mark Adler
jloup@gzip.org madler@alumni.caltech.edu
If you use the zlib library in a product, we would appreciate *not* receiving
lengthy legal documents to sign. The sources are provided for free but without
warranty of any kind. The library has been entirely written by Jean-loup
Gailly and Mark Adler; it does not include third-party code.
If you redistribute modified sources, we would appreciate that you include in
the file ChangeLog history information documenting your changes. Please read
the FAQ for more information on the distribution of modified source versions.

View File

@ -51,12 +51,12 @@ make
at the top of the bundle source tree.
Please note that you may need to install some extra dependencies, like `perl` and `dos2unix`.
Please note that you may need to install some extra dependencies, like `perl`, `dos2unix`, and `mercurial`.
On Fedora 22, for example, installing the dependencies
is as simple as running the following commands:
```bash
sudo dnf install perl dos2unix
sudo dnf install perl dos2unix mercurial
```
[Back to TOC](#table-of-contents)
@ -88,7 +88,7 @@ Copyright & License
The bundle itself is licensed under the 2-clause BSD license.
Copyright (c) 2011-2016, Yichun "agentzh" Zhang () <agentzh@gmail.com>, CloudFlare Inc.
Copyright (c) 2011-2017, Yichun "agentzh" Zhang () <agentzh@gmail.com>, OpenResty Inc.
This module is licensed under the terms of the BSD license.

View File

@ -65,7 +65,7 @@ programming language. Lua is a powerful, dynamic and light-weight
programming language. It may be embedded or used as a general-purpose,
stand-alone language.
LuaJIT is Copyright E<copy> 2005-2016 Mike Pall, released under the
LuaJIT is Copyright E<copy> 2005-2017 Mike Pall, released under the
E<rchevron> MIT open source license.
=head2 Compatibility
@ -189,13 +189,13 @@ LuaJIT.
----
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
=cut
#Pod::HTML2Pod conversion notes:
#From file luajit.html
# 8082 bytes of input
#Wed Jun 29 13:18:15 2016 agentzh
#Sat May 13 16:35:32 2017 agentzh
# No a_name switch not specified, so will not try to render <a name='...'>
# No a_href switch not specified, so will not try to render <a href='...'>

View File

@ -60,24 +60,28 @@ LuaJIT
=back
If you want to report bugs, propose fixes or suggest enhancements,
please use the GitHub issue tracker.
Please send general questions to the E<rchevron> LuaJIT mailing list.
You can also send any questions you have directly to me:
Contact info in image
=head2 Copyright
All documentation is Copyright E<copy> 2005-2016 Mike Pall.
All documentation is Copyright E<copy> 2005-2017 Mike Pall.
----
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
=cut
#Pod::HTML2Pod conversion notes:
#From file contact.html
# 2813 bytes of input
#Wed Jun 29 13:18:14 2016 agentzh
# 2989 bytes of input
#Sat May 13 16:35:32 2017 agentzh
# No a_name switch not specified, so will not try to render <a name='...'>
# No a_href switch not specified, so will not try to render <a href='...'>

View File

@ -163,14 +163,14 @@ note that this mechanism is not without overhead.
----
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
=cut
#Pod::HTML2Pod conversion notes:
#From file ext_c_api.html
# 6042 bytes of input
#Wed Jun 29 13:18:15 2016 agentzh
#Sat May 13 16:35:32 2017 agentzh
# No a_name switch not specified, so will not try to render <a name='...'>
# No a_href switch not specified, so will not try to render <a href='...'>
# Deleting phrasal "code" element (`tt_18) because it has super-phrasal elements (`br_3) as children.

View File

@ -273,13 +273,13 @@ undue conversion penalties.
----
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
=cut
#Pod::HTML2Pod conversion notes:
#From file ext_ffi.html
# 10336 bytes of input
#Wed Jun 29 13:18:15 2016 agentzh
#Sat May 13 16:35:32 2017 agentzh
# No a_name switch not specified, so will not try to render <a name='...'>
# No a_href switch not specified, so will not try to render <a href='...'>

View File

@ -488,14 +488,14 @@ itself still refers to a variable named C<i>.
----
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
=cut
#Pod::HTML2Pod conversion notes:
#From file ext_ffi_api.html
# 21471 bytes of input
#Wed Jun 29 13:18:15 2016 agentzh
#Sat May 13 16:35:32 2017 agentzh
# No a_name switch not specified, so will not try to render <a name='...'>
# No a_href switch not specified, so will not try to render <a href='...'>
# Deleting phrasal "code" element (`tt_157) because it has super-phrasal elements (`br_3, `br_4) as children.

View File

@ -1330,8 +1330,6 @@ exhibit suboptimal performance, especially when used in inner loops:
=over
=item * Bitfield accesses and initializations.
=item * Vector operations.
=item * Table initializers.
@ -1341,7 +1339,7 @@ exhibit suboptimal performance, especially when used in inner loops:
=item * Non-default initialization of VLA/VLS or large C types (E<gt>
128 bytes or E<gt> 16 array elements.
=item * Conversions from lightuserdata to C<void *>.
=item * Bitfield initializations.
=item * Pointer differences for element sizes that are not a power of
two.
@ -1375,13 +1373,13 @@ called via the FFI, if the call is compiled.
----
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
=cut
#Pod::HTML2Pod conversion notes:
#From file ext_ffi_semantics.html
# 53847 bytes of input
#Wed Jun 29 13:18:15 2016 agentzh
# 53769 bytes of input
#Sat May 13 16:35:32 2017 agentzh
# No a_name switch not specified, so will not try to render <a name='...'>
# No a_href switch not specified, so will not try to render <a href='...'>

View File

@ -609,14 +609,14 @@ function scope is unnecessary.
----
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
=cut
#Pod::HTML2Pod conversion notes:
#From file ext_ffi_tutorial.html
# 22557 bytes of input
#Wed Jun 29 13:18:15 2016 agentzh
#Sat May 13 16:35:32 2017 agentzh
# No a_name switch not specified, so will not try to render <a name='...'>
# No a_href switch not specified, so will not try to render <a href='...'>
# Deleting phrasal "code" element (`tt_100) because it has super-phrasal elements (`br_33, `br_34) as children.

View File

@ -168,14 +168,14 @@ know more.
----
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
=cut
#Pod::HTML2Pod conversion notes:
#From file ext_jit.html
# 5903 bytes of input
#Wed Jun 29 13:18:15 2016 agentzh
#Sat May 13 16:35:32 2017 agentzh
# No a_name switch not specified, so will not try to render <a name='...'>
# No a_href switch not specified, so will not try to render <a href='...'>
# Deleting phrasal "code" element (`tt_6) because it has super-phrasal elements (`br_2, `br_3) as children.

View File

@ -346,13 +346,13 @@ content immediately or copy it for later use.
----
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
=cut
#Pod::HTML2Pod conversion notes:
#From file ext_profiler.html
# 13135 bytes of input
#Wed Jun 29 13:18:15 2016 agentzh
#Sat May 13 16:35:32 2017 agentzh
# No a_name switch not specified, so will not try to render <a name='...'>
# No a_href switch not specified, so will not try to render <a href='...'>

View File

@ -166,7 +166,8 @@ and cannot be loaded.
Note: C<LJ_GC64> mode requires a different frame layout, which implies
a different, incompatible bytecode format for ports that use this mode
(e.g. ARM64). This may be rectified in the future.
(e.g. ARM64 or MIPS64) or when explicitly enabled for x64. This may be
rectified in the future.
=head2 C<table.new(narray, nhash)> allocates a pre-sized table
@ -275,6 +276,13 @@ functions.
=item * C<debug.upvalueid()> and C<debug.upvaluejoin()>.
=item * Lua/C API extensions: C<lua_version()> C<lua_upvalueid()>
C<lua_upvaluejoin()> C<lua_loadx()> C<lua_copy()> C<lua_tonumberx()>
C<lua_tointegerx()> C<luaL_fileresult()> C<luaL_execresult()>
C<luaL_loadfilex()> C<luaL_loadbufferx()> C<luaL_traceback()>
C<luaL_setfuncs()> C<luaL_pushmodule()> C<luaL_newlibtable()>
C<luaL_newlib()> C<luaL_testudata()> C<luaL_setmetatable()>
=item * Command line option C<-E>.
=item * Command line checks C<__tostring> for errors.
@ -314,6 +322,10 @@ status.
=item * Remove C<math.mod()>, C<string.gfind()>.
=item * C<package.searchers>.
=item * C<module()> returns the module table.
=back
Note: this provides only partial compatibility with Lua 5.2 at the
@ -330,6 +342,18 @@ LuaJIT supports some extensions from Lua 5.3:
=item * Unicode escape C<'\u{XX...}'> embeds the UTF-8 encoding in
string literals.
=item * The argument table C<arg> can be read (and modified) by
C<LUA_INIT> and C<-e> chunks.
=item * C<io.read()> and C<file:read()> accept formats with or without
a leading C<*>.
=item * C<table.move(a1, f, e, t [,a2])>.
=item * C<coroutine.isyieldable()>.
=item * Lua/C API extensions: C<lua_isyieldable()>
=back
=head2 C++ Exception Interoperability
@ -441,13 +465,13 @@ destructors.
----
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
=cut
#Pod::HTML2Pod conversion notes:
#From file extensions.html
# 16722 bytes of input
#Wed Jun 29 13:18:15 2016 agentzh
# 17733 bytes of input
#Sat May 13 16:35:32 2017 agentzh
# No a_name switch not specified, so will not try to render <a name='...'>
# No a_href switch not specified, so will not try to render <a href='...'>

View File

@ -212,13 +212,13 @@ development of certain features, if they are important to you.
----
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
=cut
#Pod::HTML2Pod conversion notes:
#From file faq.html
# 7685 bytes of input
#Wed Jun 29 13:18:15 2016 agentzh
#Sat May 13 16:35:32 2017 agentzh
# No a_name switch not specified, so will not try to render <a name='...'>
# No a_href switch not specified, so will not try to render <a href='...'>

View File

@ -185,6 +185,11 @@ MSVC or WinSDK.
Please read the instructions given in these files, before changing any
settings.
LuaJIT on x64 currently uses 32 bit GC objects by default. C<LJ_GC64>
mode may be explicitly enabled: add C<XCFLAGS=-DLUAJIT_ENABLE_GC64> to
the make command or run C<msvcbuild gc64> for MSVC/WinSDK. Please check
the note about the bytecode format differences, too.
=head2 POSIX Systems (Linux, OSX, *BSD etc.)
=head2 Prerequisites
@ -198,8 +203,8 @@ you haven't already done so. Move it to a directory of your choice,
open a terminal window and change to this directory. Now unpack the
archive and change to the newly created directory:
tar zxf LuaJIT-2.0.4.tar.gz
cd LuaJIT-2.0.4
tar zxf LuaJIT-2.0.5.tar.gz
cd LuaJIT-2.0.5
=head2 Building LuaJIT
@ -491,14 +496,15 @@ Apple, not me. Or use Android. :-p
ISDKP=$(xcrun --sdk iphoneos --show-sdk-path)
ICC=$(xcrun --sdk iphoneos --find clang)
ISDKF="-arch armv7 -isysroot $ISDKP"
make HOST_CC="clang -m32 -arch i386" CROSS="$(dirname $ICC)/" \
TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS
make DEFAULT_CC=clang HOST_CC="clang -m32 -arch i386" \
CROSS="$(dirname $ICC)/" TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS
# iOS/ARM64
ISDKP=$(xcrun --sdk iphoneos --show-sdk-path)
ICC=$(xcrun --sdk iphoneos --find clang)
ISDKF="-arch arm64 -isysroot $ISDKP"
make CROSS="$(dirname $ICC)/" TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS
make DEFAULT_CC=clang CROSS="$(dirname $ICC)/" \
TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS
=head2 Cross-compiling for consoles
@ -586,15 +592,11 @@ don't intend to load Lua/C modules at runtime.
=back
=item * If you're building a 64 bit application on OSX which links
directly or indirectly against LuaJIT, you need to link your main
executable with these flags:
directly or indirectly against LuaJIT which is not built for C<LJ_GC64>
mode, you need to link your main executable with these flags:
-pagezero_size 10000 -image_base 100000000
Also, it's recommended to C<rebase> all (self-compiled) shared
libraries which are loaded at runtime on OSX/x64 (e.g. C extension
modules for Lua). See: C<man rebase>
=back
Additional hints for initializing LuaJIT using the C API functions:
@ -683,14 +685,14 @@ package maintainer), anyway.
----
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
=cut
#Pod::HTML2Pod conversion notes:
#From file install.html
# 25008 bytes of input
#Wed Jun 29 13:18:15 2016 agentzh
# 25250 bytes of input
#Sat May 13 16:35:32 2017 agentzh
# No a_name switch not specified, so will not try to render <a name='...'>
# No a_href switch not specified, so will not try to render <a href='...'>
# Deleting phrasal "a" element (`a_34) because it has super-phrasal elements (`br_16) as children.

View File

@ -197,7 +197,7 @@ They are mainly used for debugging the JIT compiler itself. For a
description of their options and output format, please read the comment
block at the start of their source. They can be found in the C<lib>
directory of the source distribution or installed under the C<jit>
directory. By default this is C</usr/local/share/luajit-2.0.4/jit> on
directory. By default this is C</usr/local/share/luajit-2.0.5/jit> on
POSIX systems.
=head2 C<-O[level]>
@ -409,13 +409,13 @@ Max. total size of all machine code areas in KBytes
----
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
=cut
#Pod::HTML2Pod conversion notes:
#From file running.html
# 13720 bytes of input
#Wed Jun 29 13:18:15 2016 agentzh
#Sat May 13 16:35:32 2017 agentzh
# No a_name switch not specified, so will not try to render <a name='...'>
# No a_href switch not specified, so will not try to render <a href='...'>

View File

@ -87,17 +87,27 @@ are not handled correctly. The error may fall through an on-trace
C<pcall> or it may be passed on to the function set with C<lua_atpanic>
on x64. This issue will be fixed with the new garbage collector.
=item * LuaJIT on 64 bit systems provides a B<limited range> of 47 bits
for the B<legacy C<lightuserdata>> data type. This is only relevant on
x64 systems which use the negative part of the virtual address space in
user mode, e.g. Solaris/x64, and on ARM64 systems configured with a 48
bit or 52 bit VA. Avoid using C<lightuserdata> to hold pointers that
may point outside of that range, e.g. variables on the stack. In
general, avoid this data type for new code and replace it with (much
more performant) FFI bindings. FFI cdata pointers can address the full
64 bit range.
=back
----
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
=cut
#Pod::HTML2Pod conversion notes:
#From file status.html
# 3334 bytes of input
#Wed Jun 29 13:18:15 2016 agentzh
# 3931 bytes of input
#Sat May 13 16:35:32 2017 agentzh
# No a_name switch not specified, so will not try to render <a name='...'>
# No a_href switch not specified, so will not try to render <a href='...'>

View File

@ -6,9 +6,9 @@ README-win32 - README for the Windows 32-bit build of OpenResty
Description
===========
The binary distributions of OpenResty can be downloaded from the following web page:
The official binary Win32 distribution of OpenResty can be downloaded from the following web page:
https://openresty.org/#Download
https://openresty.org/en/download.html
To start the NGINX server of the nginx server of the Win32 binary distribution of OpenResty:
@ -124,25 +124,58 @@ MinGW gcc 4.8.1, MSYS perl, MSYS bash, MSYS make, and etc. Basically, it is curr
the following cmmands:
```bash
PCRE=pcre-8.39
ZLIB=zlib-1.2.8
OPENSSL=openssl-1.0.2j
mkdir -p objs/lib || exit 1
cd objs/lib || exit 1
ls ../../..
tar -xf ../../../openssl-1.0.2d.tar.gz
tar -xf ../../../zlib-1.2.8.tar.gz
tar -xf ../../../pcre-8.37.tar.gz
tar -xf ../../../$OPENSSL.tar.gz || exit 1
tar -xf ../../../$ZLIB.tar.gz || exit 1
tar -xf ../../../$PCRE.tar.gz || exit 1
cd ../..
./configure --with-cc=gcc \
cd objs/lib/$OPENSSL || exit 1
patch -p1 < ../../../patches/openssl-1.0.2h-sess_set_get_cb_yield.patch || exit 1
cd ../../..
./configure \
--with-cc=gcc \
--with-ipv6 \
--prefix= \
--with-cc-opt='-DFD_SETSIZE=1024' \
--with-select_module \
--with-ipv6 \
--sbin-path=nginx.exe \
--with-pcre-jit \
--without-http_rds_json_module \
--without-http_rds_csv_module \
--without-lua_rds_parser \
--with-ipv6 \
--with-stream \
--with-stream_ssl_module \
--with-http_v2_module \
--without-mail_pop3_module \
--without-mail_imap_module \
--without-mail_smtp_module \
--with-http_stub_status_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_auth_request_module \
--with-http_secure_link_module \
--with-http_random_index_module \
--with-http_gzip_static_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-select_module \
--with-luajit-xcflags="-DLUAJIT_NUMMODE=2 -DLUAJIT_ENABLE_LUA52COMPAT" \
--with-pcre=objs/lib/pcre-8.37 \
--with-zlib=objs/lib/zlib-1.2.8 \
--with-openssl=objs/lib/openssl-1.0.2d \
-j5
--with-pcre=objs/lib/$PCRE \
--with-zlib=objs/lib/$ZLIB \
--with-openssl=objs/lib/$OPENSSL \
-j5 || exit 1
make
make install
```
@ -162,14 +195,14 @@ installing the build toolchain.
Author
======
Yichun "agentzh" Zhang <agentzh@gmail.com>, CloudFlare Inc.
Yichun "agentzh" Zhang <agentzh@gmail.com>, OpenResty Inc.
Copyright & License
===================
This module is licensed under the BSD license.
Copyright (C) 2015-2016, by Yichun "agentzh" Zhang () <agentzh@gmail.com>, CloudFlare Inc.
Copyright (C) 2015-2016, by Yichun "agentzh" Zhang () <agentzh@gmail.com>, OpenResty Inc.
All rights reserved.

View File

@ -16,7 +16,7 @@
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="https://openresty.org/">openresty.org</a>.<br/>
<a href="https://openresty.org/">openresty.org</a>.<br/></p>
<p><em>Thank you for flying OpenResty.</em></p>
</body>

View File

@ -0,0 +1,27 @@
diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c
index 0f6b3ae..56d44fc 100644
--- a/src/http/ngx_http_upstream.c
+++ b/src/http/ngx_http_upstream.c
@@ -1368,6 +1368,11 @@ ngx_http_upstream_connect(ngx_http_request_t *r, ngx_http_upstream_t *u)
return;
}
+ if (rc >= NGX_HTTP_SPECIAL_RESPONSE) {
+ ngx_http_upstream_finalize_request(r, u, rc);
+ return;
+ }
+
u->state->peer = u->peer.name;
if (rc == NGX_BUSY) {
diff --git a/src/http/ngx_http_upstream.h b/src/http/ngx_http_upstream.h
index b288f28..9b60e12 100644
--- a/src/http/ngx_http_upstream.h
+++ b/src/http/ngx_http_upstream.h
@@ -418,5 +418,6 @@ extern ngx_module_t ngx_http_upstream_module;
extern ngx_conf_bitmask_t ngx_http_upstream_cache_method_mask[];
extern ngx_conf_bitmask_t ngx_http_upstream_ignore_headers_masks[];
+#define HAVE_BALANCER_STATUS_CODE_PATCH
#endif /* _NGX_HTTP_UPSTREAM_H_INCLUDED_ */

View File

@ -0,0 +1,13 @@
diff --git a/src/http/ngx_http_special_response.c b/src/http/ngx_http_special_response.c
index 64e5acd..f5374f6 100644
--- a/src/http/ngx_http_special_response.c
+++ b/src/http/ngx_http_special_response.c
@@ -26,7 +26,7 @@ static u_char ngx_http_error_full_tail[] =
static u_char ngx_http_error_tail[] =
-"<hr><center>nginx</center>" CRLF
+"<hr><center>openresty</center>" CRLF
"</body>" CRLF
"</html>" CRLF
;

View File

@ -0,0 +1,98 @@
diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c
index 57af8132..4853945f 100644
--- a/src/event/ngx_event.c
+++ b/src/event/ngx_event.c
@@ -196,6 +196,9 @@ ngx_process_events_and_timers(ngx_cycle_t *cycle)
ngx_uint_t flags;
ngx_msec_t timer, delta;
+ ngx_queue_t *q;
+ ngx_event_t *ev;
+
if (ngx_timer_resolution) {
timer = NGX_TIMER_INFINITE;
flags = 0;
@@ -215,6 +218,13 @@ ngx_process_events_and_timers(ngx_cycle_t *cycle)
#endif
}
+ if (!ngx_queue_empty(&ngx_posted_delayed_events)) {
+ ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
+ "posted delayed event queue not empty"
+ " making poll timeout 0");
+ timer = 0;
+ }
+
if (ngx_use_accept_mutex) {
if (ngx_accept_disabled > 0) {
ngx_accept_disabled--;
@@ -257,6 +267,35 @@ ngx_process_events_and_timers(ngx_cycle_t *cycle)
}
ngx_event_process_posted(cycle, &ngx_posted_events);
+
+ while (!ngx_queue_empty(&ngx_posted_delayed_events)) {
+ q = ngx_queue_head(&ngx_posted_delayed_events);
+
+ ev = ngx_queue_data(q, ngx_event_t, queue);
+ if (ev->delayed) {
+ /* start of newly inserted nodes */
+ for (/* void */;
+ q != ngx_queue_sentinel(&ngx_posted_delayed_events);
+ q = ngx_queue_next(q))
+ {
+ ev = ngx_queue_data(q, ngx_event_t, queue);
+ ev->delayed = 0;
+
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
+ "skipping delayed posted event %p,"
+ " till next iteration", ev);
+ }
+
+ break;
+ }
+
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
+ "delayed posted event %p", ev);
+
+ ngx_delete_posted_event(ev);
+
+ ev->handler(ev);
+ }
}
@@ -600,6 +639,7 @@ ngx_event_process_init(ngx_cycle_t *cycle)
ngx_queue_init(&ngx_posted_accept_events);
ngx_queue_init(&ngx_posted_events);
+ ngx_queue_init(&ngx_posted_delayed_events);
if (ngx_event_timer_init(cycle->log) == NGX_ERROR) {
return NGX_ERROR;
diff --git a/src/event/ngx_event_posted.c b/src/event/ngx_event_posted.c
index d851f3d1..b6cea009 100644
--- a/src/event/ngx_event_posted.c
+++ b/src/event/ngx_event_posted.c
@@ -12,6 +12,7 @@
ngx_queue_t ngx_posted_accept_events;
ngx_queue_t ngx_posted_events;
+ngx_queue_t ngx_posted_delayed_events;
void
diff --git a/src/event/ngx_event_posted.h b/src/event/ngx_event_posted.h
index 145d30fe..6c388553 100644
--- a/src/event/ngx_event_posted.h
+++ b/src/event/ngx_event_posted.h
@@ -43,6 +43,9 @@ void ngx_event_process_posted(ngx_cycle_t *cycle, ngx_queue_t *posted);
extern ngx_queue_t ngx_posted_accept_events;
extern ngx_queue_t ngx_posted_events;
+extern ngx_queue_t ngx_posted_delayed_events;
+
+#define HAVE_POSTED_DELAYED_EVENTS_PATCH
#endif /* _NGX_EVENT_POSTED_H_INCLUDED_ */

View File

@ -0,0 +1,60 @@
diff --git a/src/core/ngx_cycle.h b/src/core/ngx_cycle.h
index c51b7ff..4c335b9 100644
--- a/src/core/ngx_cycle.h
+++ b/src/core/ngx_cycle.h
@@ -22,9 +22,14 @@
#define NGX_DEBUG_POINTS_ABORT 2
+#define HAVE_INTERCEPT_ERROR_LOG_PATCH
+
+
typedef struct ngx_shm_zone_s ngx_shm_zone_t;
typedef ngx_int_t (*ngx_shm_zone_init_pt) (ngx_shm_zone_t *zone, void *data);
+typedef ngx_int_t (*ngx_log_intercept_pt) (ngx_log_t *log, ngx_uint_t level,
+ u_char *buf, size_t len);
struct ngx_shm_zone_s {
void *data;
@@ -75,6 +80,10 @@ struct ngx_cycle_s {
ngx_str_t prefix;
ngx_str_t lock_file;
ngx_str_t hostname;
+
+ ngx_log_intercept_pt intercept_error_log_handler;
+ void *intercept_error_log_data;
+ unsigned entered_logger; /* :1 */
};
diff --git a/src/core/ngx_log.c b/src/core/ngx_log.c
index 8e9408d..ed9b11b 100644
--- a/src/core/ngx_log.c
+++ b/src/core/ngx_log.c
@@ -112,6 +112,8 @@ ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
ngx_uint_t wrote_stderr, debug_connection;
u_char errstr[NGX_MAX_ERROR_STR];
+ ngx_log_intercept_pt log_intercept = NULL;
+
last = errstr + NGX_MAX_ERROR_STR;
p = ngx_cpymem(errstr, ngx_cached_err_log_time.data,
@@ -153,6 +155,16 @@ ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
p = last - NGX_LINEFEED_SIZE;
}
+ if (ngx_cycle) {
+ log_intercept = ngx_cycle->intercept_error_log_handler;
+ }
+
+ if (log_intercept && !ngx_cycle->entered_logger) {
+ ngx_cycle->entered_logger = 1;
+ log_intercept(log, level, errstr, p - errstr);
+ ngx_cycle->entered_logger = 0;
+ }
+
ngx_linefeed(p);
wrote_stderr = 0;

View File

@ -0,0 +1,211 @@
diff --git a/src/core/nginx.c b/src/core/nginx.c
index 60f8fe7..4bd244b 100644
--- a/src/core/nginx.c
+++ b/src/core/nginx.c
@@ -981,6 +981,7 @@ ngx_core_module_create_conf(ngx_cycle_t *cycle)
ccf->daemon = NGX_CONF_UNSET;
ccf->master = NGX_CONF_UNSET;
+ ccf->privileged_agent = NGX_CONF_UNSET;
ccf->timer_resolution = NGX_CONF_UNSET_MSEC;
ccf->worker_processes = NGX_CONF_UNSET;
@@ -1009,6 +1010,7 @@ ngx_core_module_init_conf(ngx_cycle_t *cycle, void *conf)
ngx_conf_init_value(ccf->daemon, 1);
ngx_conf_init_value(ccf->master, 1);
+ ngx_conf_init_value(ccf->privileged_agent, 0);
ngx_conf_init_msec_value(ccf->timer_resolution, 0);
ngx_conf_init_value(ccf->worker_processes, 1);
diff --git a/src/core/ngx_cycle.h b/src/core/ngx_cycle.h
index c51b7ff..3261f90 100644
--- a/src/core/ngx_cycle.h
+++ b/src/core/ngx_cycle.h
@@ -22,6 +22,9 @@
#define NGX_DEBUG_POINTS_ABORT 2
+#define HAVE_PRIVILEGED_PROCESS_PATCH 1
+
+
typedef struct ngx_shm_zone_s ngx_shm_zone_t;
typedef ngx_int_t (*ngx_shm_zone_init_pt) (ngx_shm_zone_t *zone, void *data);
@@ -81,6 +84,7 @@ struct ngx_cycle_s {
typedef struct {
ngx_flag_t daemon;
ngx_flag_t master;
+ ngx_flag_t privileged_agent;
ngx_msec_t timer_resolution;
diff --git a/src/os/unix/ngx_process_cycle.c b/src/os/unix/ngx_process_cycle.c
index 7cee1c5..c4f70d6 100644
--- a/src/os/unix/ngx_process_cycle.c
+++ b/src/os/unix/ngx_process_cycle.c
@@ -15,6 +15,8 @@ static void ngx_start_worker_processes(ngx_cycle_t *cycle, ngx_int_t n,
ngx_int_t type);
static void ngx_start_cache_manager_processes(ngx_cycle_t *cycle,
ngx_uint_t respawn);
+static void ngx_start_privileged_agent_processes(ngx_cycle_t *cycle,
+ ngx_uint_t respawn);
static void ngx_pass_open_channel(ngx_cycle_t *cycle, ngx_channel_t *ch);
static void ngx_signal_worker_processes(ngx_cycle_t *cycle, int signo);
static ngx_uint_t ngx_reap_children(ngx_cycle_t *cycle);
@@ -24,6 +26,7 @@ static void ngx_worker_process_init(ngx_cycle_t *cycle, ngx_int_t worker);
static void ngx_worker_process_exit(ngx_cycle_t *cycle);
static void ngx_channel_handler(ngx_event_t *ev);
static void ngx_cache_manager_process_cycle(ngx_cycle_t *cycle, void *data);
+static void ngx_privileged_agent_process_cycle(ngx_cycle_t *cycle, void *data);
static void ngx_cache_manager_process_handler(ngx_event_t *ev);
static void ngx_cache_loader_process_handler(ngx_event_t *ev);
@@ -51,6 +54,8 @@ sig_atomic_t ngx_noaccept;
ngx_uint_t ngx_noaccepting;
ngx_uint_t ngx_restart;
+ngx_uint_t ngx_is_privileged_agent;
+
static u_char master_process[] = "master process";
@@ -130,6 +135,7 @@ ngx_master_process_cycle(ngx_cycle_t *cycle)
ngx_start_worker_processes(cycle, ccf->worker_processes,
NGX_PROCESS_RESPAWN);
ngx_start_cache_manager_processes(cycle, 0);
+ ngx_start_privileged_agent_processes(cycle, 0);
ngx_new_binary = 0;
delay = 0;
@@ -224,6 +230,7 @@ ngx_master_process_cycle(ngx_cycle_t *cycle)
ngx_start_worker_processes(cycle, ccf->worker_processes,
NGX_PROCESS_RESPAWN);
ngx_start_cache_manager_processes(cycle, 0);
+ ngx_start_privileged_agent_processes(cycle, 0);
ngx_noaccepting = 0;
continue;
@@ -243,6 +250,7 @@ ngx_master_process_cycle(ngx_cycle_t *cycle)
ngx_start_worker_processes(cycle, ccf->worker_processes,
NGX_PROCESS_JUST_RESPAWN);
ngx_start_cache_manager_processes(cycle, 1);
+ ngx_start_privileged_agent_processes(cycle, 1);
/* allow new processes to start */
ngx_msleep(100);
@@ -257,6 +265,7 @@ ngx_master_process_cycle(ngx_cycle_t *cycle)
ngx_start_worker_processes(cycle, ccf->worker_processes,
NGX_PROCESS_RESPAWN);
ngx_start_cache_manager_processes(cycle, 0);
+ ngx_start_privileged_agent_processes(cycle, 0);
live = 1;
}
@@ -424,6 +433,34 @@ ngx_start_cache_manager_processes(ngx_cycle_t *cycle, ngx_uint_t respawn)
static void
+ngx_start_privileged_agent_processes(ngx_cycle_t *cycle, ngx_uint_t respawn)
+{
+ ngx_channel_t ch;
+ ngx_core_conf_t *ccf;
+
+ ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx,
+ ngx_core_module);
+
+ if (!ccf->privileged_agent) {
+ return;
+ }
+
+ ngx_spawn_process(cycle, ngx_privileged_agent_process_cycle,
+ "privileged agent process", "privileged agent process",
+ respawn ? NGX_PROCESS_JUST_RESPAWN : NGX_PROCESS_RESPAWN);
+
+ ngx_memzero(&ch, sizeof(ngx_channel_t));
+
+ ch.command = NGX_CMD_OPEN_CHANNEL;
+ ch.pid = ngx_processes[ngx_process_slot].pid;
+ ch.slot = ngx_process_slot;
+ ch.fd = ngx_processes[ngx_process_slot].channel[0];
+
+ ngx_pass_open_channel(cycle, &ch);
+}
+
+
+static void
ngx_pass_open_channel(ngx_cycle_t *cycle, ngx_channel_t *ch)
{
ngx_int_t i;
@@ -827,7 +864,10 @@ ngx_worker_process_init(ngx_cycle_t *cycle, ngx_int_t worker)
}
}
- if (geteuid() == 0) {
+ /*
+ * privileged agent process has the same permission as master process
+ */
+ if (!ngx_is_privileged_agent && geteuid() == 0) {
if (setgid(ccf->group) == -1) {
ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
"setgid(%d) failed", ccf->group);
@@ -1144,6 +1184,47 @@ ngx_cache_manager_process_cycle(ngx_cycle_t *cycle, void *data)
static void
+ngx_privileged_agent_process_cycle(ngx_cycle_t *cycle, void *data)
+{
+ char *name = data;
+
+ /*
+ * Set correct process type since closing listening Unix domain socket
+ * in a master process also removes the Unix domain socket file.
+ */
+ ngx_process = NGX_PROCESS_HELPER;
+ ngx_is_privileged_agent = 1;
+
+ ngx_close_listening_sockets(cycle);
+
+ /* Set a moderate number of connections for a helper process. */
+ cycle->connection_n = 512;
+
+ ngx_worker_process_init(cycle, -1);
+
+ ngx_use_accept_mutex = 0;
+
+ ngx_setproctitle(name);
+
+ for ( ;; ) {
+
+ if (ngx_terminate || ngx_quit) {
+ ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting");
+ ngx_worker_process_exit(cycle);
+ }
+
+ if (ngx_reopen) {
+ ngx_reopen = 0;
+ ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "reopening logs");
+ ngx_reopen_files(cycle, -1);
+ }
+
+ ngx_process_events_and_timers(cycle);
+ }
+}
+
+
+static void
ngx_cache_manager_process_handler(ngx_event_t *ev)
{
time_t next, n;
diff --git a/src/os/unix/ngx_process_cycle.h b/src/os/unix/ngx_process_cycle.h
index 69495d5..5149396 100644
--- a/src/os/unix/ngx_process_cycle.h
+++ b/src/os/unix/ngx_process_cycle.h
@@ -45,6 +45,7 @@ extern ngx_pid_t ngx_new_binary;
extern ngx_uint_t ngx_inherited;
extern ngx_uint_t ngx_daemonized;
extern ngx_uint_t ngx_exiting;
+extern ngx_uint_t ngx_is_privileged_agent;
extern sig_atomic_t ngx_reap;
extern sig_atomic_t ngx_sigio;

View File

@ -1,6 +1,6 @@
--- nginx-1.11.2/src/http/modules/ngx_http_proxy_module.c 2013-10-08 05:07:14.000000000 -0700
+++ nginx-1.11.2-patched/src/http/modules/ngx_http_proxy_module.c 2013-10-27 15:29:41.619378592 -0700
@@ -602,10 +602,10 @@ static ngx_keyval_t ngx_http_proxy_cach
--- nginx-1.11.2/src/http/modules/ngx_http_proxy_module.c 2017-07-16 14:02:51.000000000 +0800
+++ nginx-1.11.2-patched/src/http/modules/ngx_http_proxy_module.c 2017-07-16 14:02:51.000000000 +0800
@@ -793,13 +793,13 @@ static ngx_keyval_t ngx_http_proxy_cach
static ngx_http_variable_t ngx_http_proxy_vars[] = {
{ ngx_string("proxy_host"), NULL, ngx_http_proxy_host_variable, 0,
@ -12,4 +12,8 @@
+ NGX_HTTP_VAR_CHANGEABLE|NGX_HTTP_VAR_NOCACHEABLE, 0 },
{ ngx_string("proxy_add_x_forwarded_for"), NULL,
ngx_http_proxy_add_x_forwarded_for_variable, 0, NGX_HTTP_VAR_NOHASH, 0 },
- ngx_http_proxy_add_x_forwarded_for_variable, 0, NGX_HTTP_VAR_NOHASH, 0 },
+ ngx_http_proxy_add_x_forwarded_for_variable, 0, 0, 0 },
#if 0
{ ngx_string("proxy_add_via"), NULL, NULL, 0, NGX_HTTP_VAR_NOHASH, 0 },

View File

@ -0,0 +1,55 @@
# HG changeset patch
# User Thibault Charbonnier <thibaultcha@fastmail.com>
# Date 1481847421 28800
# Thu Dec 15 16:17:01 2016 -0800
# Node ID 8bf038fe006fd8ae253d6b41fc6cf109a8912d3e
# Parent a3dc657f4e9530623683e6b85bd7492662e4dc47
Resolver: ignore ipv6=off resolver option when no ipv6 support
Makes the resolver directive more robust: we only error out when ipv6
resolution is desired but not supported (ipv6=on).
use case 1: some configurations are sometimes re-used between builds with and
without ipv6 support. This patch avoids the need to remove the "ipv6=off" flag.
use case 2: currently, some tools rely on the --with-ipv6 configure option from
"nginx -V" to determine if ipv6 resolution should be disabled in some cases.
With this option disappearing in Nginx 1.11.5, this patch would allow such tools
to assume "ipv6=off" to be safe regardless of ipv6 support in the current
build.
diff -r a3dc657f4e95 -r 8bf038fe006f src/core/ngx_resolver.c
--- a/src/core/ngx_resolver.c Thu Dec 15 21:44:34 2016 +0300
+++ b/src/core/ngx_resolver.c Thu Dec 15 16:17:01 2016 -0800
@@ -224,14 +224,22 @@
continue;
}
-#if (NGX_HAVE_INET6)
if (ngx_strncmp(names[i].data, "ipv6=", 5) == 0) {
if (ngx_strcmp(&names[i].data[5], "on") == 0) {
+#if (NGX_HAVE_INET6)
r->ipv6 = 1;
+#else
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+ "no ipv6 support but \"%V\" in resolver",
+ &names[i]);
+ return NULL;
+#endif
} else if (ngx_strcmp(&names[i].data[5], "off") == 0) {
+#if (NGX_HAVE_INET6)
r->ipv6 = 0;
+#endif
} else {
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
@@ -241,7 +249,6 @@
continue;
}
-#endif
ngx_memzero(&u, sizeof(ngx_url_t));

View File

@ -0,0 +1,53 @@
--- nginx-1.11.2/src/os/unix/ngx_process_cycle.c 2016-07-05 08:56:16.000000000 -0700
+++ nginx-1.11.2-patched/src/os/unix/ngx_process_cycle.c 2017-05-14 09:59:52.301108274 -0700
@@ -304,11 +304,29 @@ ngx_single_process_cycle(ngx_cycle_t *cy
}
for ( ;; ) {
+ if (ngx_exiting) {
+ ngx_event_cancel_timers();
+
+ if (ngx_event_timer_rbtree.root == ngx_event_timer_rbtree.sentinel)
+ {
+ ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting");
+
+ for (i = 0; cycle->modules[i]; i++) {
+ if (cycle->modules[i]->exit_process) {
+ cycle->modules[i]->exit_process(cycle);
+ }
+ }
+
+ ngx_master_process_exit(cycle);
+ }
+ }
+
ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "worker cycle");
ngx_process_events_and_timers(cycle);
- if (ngx_terminate || ngx_quit) {
+ if (ngx_terminate) {
+ ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting");
for (i = 0; cycle->modules[i]; i++) {
if (cycle->modules[i]->exit_process) {
@@ -319,6 +337,19 @@ ngx_single_process_cycle(ngx_cycle_t *cy
ngx_master_process_exit(cycle);
}
+ if (ngx_quit) {
+ ngx_quit = 0;
+ ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0,
+ "gracefully shutting down");
+ ngx_setproctitle("process is shutting down");
+
+ if (!ngx_exiting) {
+ ngx_exiting = 1;
+ ngx_close_listening_sockets(cycle);
+ ngx_close_idle_connections(cycle);
+ }
+ }
+
if (ngx_reconfigure) {
ngx_reconfigure = 0;
ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "reconfiguring");

View File

@ -0,0 +1,14 @@
diffsrc/http/modules/ngx_http_range_filter_module.c b/src/http/modules/ngx_http_range_filter_module.c
--- src/http/modules/ngx_http_range_filter_module.c
+++ src/http/modules/ngx_http_range_filter_module.c
@@ -377,6 +377,10 @@ ngx_http_range_parse(ngx_http_request_t
range->start = start;
range->end = end;
+ if (size > NGX_MAX_OFF_T_VALUE - (end - start)) {
+ return NGX_HTTP_RANGE_NOT_SATISFIABLE;
+ }
+
size += end - start;
if (ranges-- == 0) {

4985
t/sanity.t

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,12 @@
#!/bin/bash
PCRE=pcre-8.39
ZLIB=zlib-1.2.8
OPENSSL=openssl-1.0.2h
PCRE=pcre-8.40
ZLIB=zlib-1.2.11
OPENSSL=openssl-1.0.2k
# wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz
# wget http://zlib.net/zlib-1.2.11.tar.gz
# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
rm -rf objs || exit 1
mkdir -p objs/lib || exit 1
@ -14,27 +18,46 @@ tar -xf ../../../$PCRE.tar.gz || exit 1
cd ../..
cd objs/lib/$OPENSSL || exit 1
patch -p1 < ../../../patches/$OPENSSL-sess_set_get_cb_yield.patch || exit 1
patch -p1 < ../../../patches/openssl-1.0.2h-sess_set_get_cb_yield.patch || exit 1
cd ../../..
#--with-openssl-opt="no-asm" \
./configure --with-cc=gcc --with-ipv6 --prefix= \
./configure \
--with-cc=gcc \
--with-ipv6 \
--prefix= \
--with-cc-opt='-DFD_SETSIZE=1024' \
--sbin-path=nginx.exe \
--with-ipv6 \
--with-pcre-jit \
--with-http_stub_status_module \
--with-http_realip_module \
--without-http_rds_json_module \
--without-http_rds_csv_module \
--without-lua_rds_parser \
--with-ipv6 \
--with-stream \
--with-stream_ssl_module \
--with-http_v2_module \
--without-mail_pop3_module \
--without-mail_imap_module \
--without-mail_smtp_module \
--with-http_stub_status_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_auth_request_module \
--with-http_secure_link_module \
--with-http_random_index_module \
--with-http_gzip_static_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-select_module \
--with-luajit-xcflags="-DLUAJIT_NUMMODE=2 -DLUAJIT_ENABLE_LUA52COMPAT" \
--with-pcre=objs/lib/$PCRE \
--with-zlib=objs/lib/$ZLIB \
--with-openssl=objs/lib/$OPENSSL \
--with-select_module -j5 || exit 1
-j5 || exit 1
#gmake -j5
make || exit 1
make install

203
util/configure vendored
View File

@ -5,6 +5,7 @@ use strict;
use warnings;
use File::Spec;
use File::Temp qw( tempfile tmpnam );
sub shell ($@);
sub env ($$);
@ -121,12 +122,15 @@ my $with_resty_mods_regex;
}
my $prefix = '/usr/local/openresty';
my $ngx_sbin;
my %resty_opts;
my $dry_run;
my @ngx_rpaths;
my $cc;
my $cores;
my $luajit_xcflags = '';
my $user_luajit_xcflags;
my $no_luajit_lua52;
my (@ngx_opts, @ngx_cc_opts, @ngx_ld_opts);
@ -165,13 +169,13 @@ for my $opt (@ARGV) {
}
} elsif ($opt eq '--without-lua51') {
undef $resty_opts{lua};
die "ERROR: --without-lua51 is no longer supported.\n";
} elsif ($opt eq '--with-lua51') {
$resty_opts{lua} = 1;
die "ERROR: --with-lua51 is no longer supported.\n";
} elsif ($opt =~ /^--with-lua51=(.*)/) {
$resty_opts{lua_path} = $1;
die "ERROR: --with-lua51=PATH is no longer supported.\n";
} elsif ($opt eq '--without-http_rewrite_module') {
warn "WARNING: ngx_devel_kit is automatically disabled ",
@ -203,6 +207,9 @@ for my $opt (@ARGV) {
} elsif ($opt eq '--without-lua_resty_string') {
$resty_opts{no_lua_resty_string} = 1;
} elsif ($opt eq '--without-lua_resty_limit_traffic') {
$resty_opts{no_lua_resty_limit_traffic} = 1;
} elsif ($opt eq '--without-lua_resty_websocket') {
$resty_opts{no_lua_resty_websocket} = 1;
@ -250,7 +257,10 @@ for my $opt (@ARGV) {
$resty_opts{luajit_path} = $1;
} elsif ($opt =~ /^--with-luajit-xcflags=(.*)/) {
$luajit_xcflags .= " $1";
$user_luajit_xcflags .= " $1";
} elsif ($opt =~ /^--without-luajit-lua52/) {
$no_luajit_lua52 = 1;
} elsif ($opt =~ /^--with-libdrizzle=(.*)/) {
$resty_opts{libdrizzle} = $1;
@ -297,6 +307,10 @@ for my $opt (@ARGV) {
$path = File::Spec->rel2abs($path);
push @ngx_opts, "--with-$lib=$path";
} elsif ($opt =~ /^--sbin-path=(.*)/) {
$ngx_sbin = $1;
push @ngx_opts, $opt;
} elsif ($opt =~ /^--\w.*/) {
push @ngx_opts, $opt;
@ -341,10 +355,16 @@ push @make_cmds, "cd $root_dir/build/$ngx_dir && "
push @make_install_cmds, "cd $root_dir/build/$ngx_dir && "
. "\$(MAKE) install DESTDIR=\$(DESTDIR)";
push @make_install_cmds, "mkdir -p \$(DESTDIR)$prefix/site/lualib";
push @make_install_cmds,
"mkdir -p \$(DESTDIR)$prefix/site/lualib"
. " \$(DESTDIR)$prefix/site/pod"
. " \$(DESTDIR)$prefix/site/manifest";
if ($platform ne 'msys') {
push @make_install_cmds, "ln -sf $ngx_prefix/sbin/nginx \$(DESTDIR)$prefix/bin/openresty";
if (!$ngx_sbin) {
$ngx_sbin = "$ngx_prefix/sbin/nginx";
}
push @make_install_cmds, "ln -sf $ngx_sbin \$(DESTDIR)$prefix/bin/openresty";
}
cd '../..'; # to the root
@ -455,7 +475,6 @@ _END_
if (!$opts->{lua}
&& !$opts->{lua_path}
&& !$opts->{no_http_lua}
&& !$opts->{no_http_lua_upstream}
&& !$opts->{luajit_path})
{
$opts->{luajit} = 1;
@ -512,6 +531,9 @@ _END_
cd 'build';
push @make_install_cmds, "mkdir -p \$(DESTDIR)$prefix/",
"-cp $root_dir/COPYRIGHT \$(DESTDIR)$prefix/";
# build 3rd-party C libraries if required
if ($opts->{no_pool}) {
@ -601,12 +623,69 @@ _END_
}
}
if (!$no_luajit_lua52
&& (!$user_luajit_xcflags
|| $user_luajit_xcflags !~ /-DLUAJIT_ENABLE_LUA52COMPAT\b/))
{
$luajit_xcflags .= " -DLUAJIT_ENABLE_LUA52COMPAT";
}
if (!$user_luajit_xcflags
|| $user_luajit_xcflags !~ /-msse4\.2\b/)
{
# check -msse4.2
my ($out, $cfile) = tempfile("resty-config-XXXXXX",
SUFFIX => '.c', TMPDIR => 1,
UNLINK => 1);
print $out "
int main(void) {
#ifndef __SSE4_2__
# error SSE 4.2 not found
#endif
return 0;
}
";
close $out;
my $ofile = tmpnam();
my $comp = ($cc || 'cc');
my $found;
if (system("$comp -o $ofile -msse4.2 -c $cfile") == 0 && -s $ofile) {
unlink $ofile;
if (system("$comp -o $ofile -march=native -c $cfile") == 0 && -s $ofile) {
print "INFO: found -msse4.2 in $comp.\n";
$found = 1;
$luajit_xcflags .= " -msse4.2";
}
}
if (-f $ofile) {
unlink $ofile;
}
if (!$found) {
print "WARNING: -msse4.2 not supported in $comp.\n";
}
}
if ($opts->{debug}) {
$luajit_xcflags .= " -DLUA_USE_APICHECK -DLUA_USE_ASSERT";
if ($user_luajit_xcflags) {
$luajit_xcflags .= $user_luajit_xcflags;
}
$luajit_xcflags =~ s/^ +//;
$extra_opts .= qq{ Q= XCFLAGS='$luajit_xcflags'};
} else {
if ($user_luajit_xcflags) {
$luajit_xcflags .= $user_luajit_xcflags;
}
if ($luajit_xcflags) {
$luajit_xcflags =~ s/^ +//;
$extra_opts .= qq{ XCFLAGS='$luajit_xcflags'};
@ -766,7 +845,7 @@ _END_
print $in <<"_EOC_";
ngx_lua_dquote='"'
CFLAGS="\$CFLAGS -DLUA_DEFAULT_PATH='\${ngx_lua_dquote}$site_lualib_prefix/?.lua;$site_lualib_prefix/?/init.lua;$lualib_prefix/?.lua;$lualib_prefix/?/init.lua\$ngx_lua_dquote'"
CFLAGS="\$CFLAGS -DLUA_DEFAULT_PATH='\${ngx_lua_dquote}$site_lualib_prefix/?.ljbc;$site_lualib_prefix/?/init.ljbc;$lualib_prefix/?.ljbc;$lualib_prefix/?/init.ljbc;$site_lualib_prefix/?.lua;$site_lualib_prefix/?/init.lua;$lualib_prefix/?.lua;$lualib_prefix/?/init.lua\$ngx_lua_dquote'"
CFLAGS="\$CFLAGS -DLUA_DEFAULT_CPATH='\${ngx_lua_dquote}$site_lualib_prefix/?.so;$lualib_prefix/?.so\$ngx_lua_dquote'"
_EOC_
}
@ -933,7 +1012,7 @@ _EOC_
}
for my $key (qw(dns memcached redis mysql string upload websocket
lock lrucache core upstream_healthcheck))
lock lrucache core upstream_healthcheck limit_traffic))
{
unless ($opts->{"no_lua_resty_$key"}) {
(my $key2 = $key) =~ s/_/-/g;
@ -952,6 +1031,19 @@ _EOC_
}
}
# configure opm:
{
my $opm_dir = auto_complete 'opm';
my $target_dir;
if ($platform eq 'msys') {
$target_dir = "\$(DESTDIR)$prefix/";
} else {
$target_dir = "\$(DESTDIR)$prefix/bin/";
}
push @make_install_cmds, "cd $root_dir/build/$opm_dir && "
. "$root_dir/build/install bin/* $target_dir";
}
# configure resty-cli:
{
@ -1081,16 +1173,17 @@ _EOC_
disable the lua-resty-upstream-healthcheck library
--without-lua_resty_string disable the lua-resty-string library
--without-lua_resty_websocket disable the lua-resty-websocket library
--without-lua_resty_limit_traffic disable the lua-resty-limit-traffic library
--without-lua_resty_lock disable the lua-resty-lock library
--without-lua_resty_lrucache disable the lua-resty-lrucache library
--without-lua_resty_core disable the lua-resty-core library
--with-lua51 enable and build the bundled standard Lua 5.1 interpreter
--without-lua51 disable the bundled standard Lua 5.1 interpreter
--with-lua51=DIR specify the external installation of Lua 5.1 by DIR
--with-luajit enable and build the bundled LuaJIT 2.1 (the default)
--with-luajit=DIR use the external LuaJIT 2.1 installation specified by DIR
--with-luajit-xcflags=FLAGS Specify extra C compiler flags for LuaJIT 2.1
--without-luajit-lua52 Turns off the LuaJIT extensions from Lua 5.2 that may break
backward compatibility.
--with-libdrizzle=DIR specify the libdrizzle 1.0 (or drizzle) installation prefix
--with-libpq=DIR specify the libpq (or postgresql) installation prefix
--with-pg_config=PATH specify the path of the pg_config utility
@ -1098,6 +1191,7 @@ _EOC_
Options directly inherited from nginx
--sbin-path=PATH set nginx binary pathname
--modules-path=PATH set modules path
--conf-path=PATH set nginx.conf pathname
--error-log-path=PATH set error log pathname
--pid-path=PATH set nginx.pid pathname
@ -1110,6 +1204,7 @@ Options directly inherited from nginx
--group=GROUP set non-privileged group for
worker processes
--build=NAME set build name
--builddir=DIR set the build directory
--with-select_module enable select module
@ -1119,22 +1214,30 @@ Options directly inherited from nginx
--with-threads enable thread pool support
--with-file-aio enable file aio support
--with-ipv6 enable ipv6 support
--with-file-aio enable file AIO support
--with-ipv6 enable IPv6 support
--with-http_v2_module enable ngx_http_v2_module
--with-http_realip_module enable ngx_http_realip_module
--with-http_addition_module enable ngx_http_addition_module
--with-http_xslt_module enable ngx_http_xslt_module
--with-http_xslt_module=dynamic enable dynamic ngx_http_xslt_module
--with-http_image_filter_module enable ngx_http_image_filter_module
--with-http_image_filter_module=dynamic
enable dynamic ngx_http_image_filter_module
--with-http_geoip_module enable ngx_http_geoip_module
--with-http_geoip_module=dynamic enable dynamic ngx_http_geoip_module
--with-http_sub_module enable ngx_http_sub_module
--with-http_dav_module enable ngx_http_dav_module
--with-http_flv_module enable ngx_http_flv_module
--with-http_mp4_module enable ngx_http_mp4_module
--with-http_gunzip_module enable ngx_http_gunzip_module
--with-http_gzip_static_module enable ngx_http_gzip_static_module
--with-http_auth_request_module enable ngx_http_auth_request_module
--with-http_random_index_module enable ngx_http_random_index_module
--with-http_secure_link_module enable ngx_http_secure_link_module
--with-http_degradation_module enable ngx_http_degradation_module
--with-http_slice_module enable ngx_http_slice_module
--with-http_stub_status_module enable ngx_http_stub_status_module
--without-http_charset_module disable ngx_http_charset_module
@ -1158,6 +1261,8 @@ Options directly inherited from nginx
--without-http_limit_req_module disable ngx_http_limit_req_module
--without-http_empty_gif_module disable ngx_http_empty_gif_module
--without-http_browser_module disable ngx_http_browser_module
--without-http_upstream_hash_module
disable ngx_http_upstream_hash_module
--without-http_upstream_ip_hash_module
disable ngx_http_upstream_ip_hash_module
--without-http_upstream_least_conn_module
@ -1165,43 +1270,63 @@ Options directly inherited from nginx
--without-http_upstream_keepalive_module
disable ngx_http_upstream_keepalive_module
--without-http_upstream_zone_module
disable ngx_http_upstream_zone_module
--with-http_perl_module enable ngx_http_perl_module
--with-perl_modules_path=PATH set path to the perl modules
--with-perl=PATH set path to the perl binary
--with-http_perl_module=dynamic enable dynamic ngx_http_perl_module
--with-perl_modules_path=PATH set Perl modules path
--with-perl=PATH set perl binary pathname
--http-log-path=PATH set path to the http access log
--http-client-body-temp-path=PATH set path to the http client request body
temporary files
--http-proxy-temp-path=PATH set path to the http proxy temporary files
--http-fastcgi-temp-path=PATH set path to the http fastcgi temporary
files
--http-uwsgi-temp-path=PATH set path to the http uwsgi temporary files
--http-scgi-temp-path=PATH set path to the http scgi temporary files
--http-log-path=PATH set http access log pathname
--http-client-body-temp-path=PATH set path to store
http client request body temporary files
--http-proxy-temp-path=PATH set path to store
http proxy temporary files
--http-fastcgi-temp-path=PATH set path to store
http fastcgi temporary files
--http-uwsgi-temp-path=PATH set path to store
http uwsgi temporary files
--http-scgi-temp-path=PATH set path to store
http scgi temporary files
--without-http disable HTTP server
--without-http-cache disable HTTP cache
--with-mail enable POP3/IMAP4/SMTP proxy module
--with-mail=dynamic enable dynamic POP3/IMAP4/SMTP proxy module
--with-mail_ssl_module enable ngx_mail_ssl_module
--without-mail_pop3_module disable ngx_mail_pop3_module
--without-mail_imap_module disable ngx_mail_imap_module
--without-mail_smtp_module disable ngx_mail_smtp_module
--with-stream enable TCP/UDP proxy module
--with-stream=dynamic enable dynamic TCP/UDP proxy module
--with-stream_ssl_module enable ngx_stream_ssl_module
--without-stream_limit_conn_module disable ngx_stream_limit_conn_module
--without-stream_access_module disable ngx_stream_access_module
--without-stream_map_module disable ngx_stream_map_module
--without-stream_return_module disable ngx_stream_return_module
--without-stream_upstream_hash_module
disable ngx_stream_upstream_hash_module
--without-stream_upstream_least_conn_module
disable ngx_stream_upstream_least_conn_module
--without-stream_upstream_zone_module
disable ngx_stream_upstream_zone_module
--with-google_perftools_module enable ngx_google_perftools_module
--with-cpp_test_module enable ngx_cpp_test_module
--add-module=PATH enable an external module
--add-module=PATH enable external module
--add-dynamic-module=PATH enable dynamic external module
--with-cc=PATH set path to C compiler
--with-cpp=PATH set path to C preprocessor
--with-cc-opt=OPTIONS set additional options for C compiler
--with-ld-opt=OPTIONS set additional options for linker
--with-cpu-opt=CPU build for specified CPU, the valid values:
--with-cc=PATH set C compiler pathname
--with-cpp=PATH set C preprocessor pathname
--with-cc-opt=OPTIONS set additional C compiler options
--with-ld-opt=OPTIONS set additional linker options
--with-cpu-opt=CPU build for the specified CPU, valid values:
pentium, pentiumpro, pentium3, pentium4,
athlon, opteron, sparc32, sparc64, ppc64
--with-make=PATH specify the default make utility to be used
--without-pcre disable PCRE library usage
--with-pcre force PCRE library usage
--with-pcre=DIR set path to PCRE library sources
@ -1209,25 +1334,17 @@ Options directly inherited from nginx
--with-pcre-conf-opt=OPTIONS set additional configure options for PCRE
--with-pcre-jit build PCRE with JIT compilation support
--with-md5=DIR set path to md5 library sources
--with-md5-opt=OPTIONS set additional options for md5 building
--with-md5-asm use md5 assembler sources
--with-sha1=DIR set path to sha1 library sources
--with-sha1-opt=OPTIONS set additional options for sha1 building
--with-sha1-asm use sha1 assembler sources
--with-zlib=DIR set path to zlib library sources
--with-zlib-opt=OPTIONS set additional options for zlib building
--with-zlib-opt=OPTIONS set additional build options for zlib
--with-zlib-asm=CPU use zlib assembler sources optimized
for specified CPU, the valid values:
for the specified CPU, valid values:
pentium, pentiumpro
--with-libatomic force libatomic_ops library usage
--with-libatomic=DIR set path to libatomic_ops library sources
--with-openssl=DIR set path to OpenSSL library sources
--with-openssl-opt=OPTIONS set additional options for OpenSSL building
--with-openssl-opt=OPTIONS set additional build options for OpenSSL
--dry-run dry running the configure, for testing only
--platform=PLATFORM forcibly specify a platform name, for testing only

View File

@ -7,6 +7,7 @@ use Getopt::Std qw(getopts);
use Cwd qw/cwd/;
sub sh ($);
sub cleanup ();
sub write_config_file ($);
my %opts;
@ -32,14 +33,8 @@ if ($^O eq 'freebsd' || $^O eq 'solaris') {
my $cfg_opts = "";
if ($opts{l}) {
$lua = 'Lua';
$cfg_opts .= " --with-lua51";
} else {
$lua = 'LuaJIT';
#$cfg_opts .= " --with-luajit";
}
$lua = 'LuaJIT';
#$cfg_opts .= " --with-luajit";
if ($^O eq 'solaris') {
$cfg_opts .= " --with-cc=gcc";
@ -67,9 +62,9 @@ sub write_config_file ($) {
write_config_file "/tmp/nginx.conf";
warn "=== Without FFI ===\n";
warn "\n=== Without FFI ===\n";
$prefix = "/usr/local/openresty-noffi";
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
cleanup();
unless ($opts{f}) {
sh "./configure $cfg_opts --with-cc-opt='-DNGX_LUA_NO_FFI_API' --prefix=$prefix -j$jobs > /dev/null";
}
@ -82,12 +77,12 @@ sh "sudo $prefix/nginx/sbin/nginx";
sh "curl -si localhost/lua|grep $lua";
sh "curl -si localhost/lua|grep $ver";
sh "curl -si localhost/cjson|grep 'json.safe: '";
sh qq{$prefix/bin/resty -e 'ngx.say("Hello World!")'|grep 'Hello World'};
#sh qq{$prefix/bin/resty -e 'ngx.say("Hello World!")'|grep 'Hello World'};
sh "sudo $prefix/nginx/sbin/nginx -sstop";
warn "=== --with-stream ===\n";
warn "\n=== --with-stream ===\n";
$prefix = "/usr/local/openresty-stream";
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
cleanup();
unless ($opts{f}) {
sh "./configure $cfg_opts --with-stream --prefix=$prefix -j$jobs > /dev/null";
}
@ -104,9 +99,9 @@ sh "curl -si localhost/cjson|grep 'json.safe: '";
sh qq{$prefix/bin/resty -e 'ngx.say("Hello World!")'|grep 'Hello World'};
sh "sudo $prefix/nginx/sbin/nginx -sstop";
warn "=== --with-stream + dtrace static probes ===\n";
warn "\n=== --with-stream + dtrace static probes ===\n";
$prefix = "/usr/local/openresty-stream-usdt";
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
cleanup();
unless ($opts{f}) {
sh "./configure $cfg_opts --with-dtrace-probes --with-stream --prefix=$prefix -j$jobs > /dev/null";
}
@ -124,9 +119,9 @@ sh "curl -si localhost/cjson|grep 'json.safe: '";
sh qq{$prefix/bin/resty -e 'ngx.say("Hello World!")'|grep 'Hello World'};
sh "sudo $prefix/nginx/sbin/nginx -sstop";
warn "=== Without Gzip/SSL/PCRE ===\n";
warn "\n=== Without Gzip/SSL/PCRE ===\n";
$prefix = "/usr/local/openresty-nogzip";
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
cleanup();
unless ($opts{f}) {
sh "./configure $cfg_opts --without-http_rewrite_module --without-http_ssl_module --without-pcre --without-http_gzip_module --prefix=$prefix -j$jobs > /dev/null";
}
@ -142,14 +137,14 @@ sh "sudo $prefix/nginx/sbin/nginx";
sh "curl -si localhost/lua|grep $lua";
sh "curl -si localhost/lua|grep $ver";
sh "curl -si localhost/cjson|grep 'json.safe: '";
sh qq{$prefix/bin/resty -e 'ngx.say("Hello World!")'|grep 'Hello World'};
#sh qq{$prefix/bin/resty -e 'ngx.say("Hello World!")'|grep 'Hello World'};
sh "sudo $prefix/nginx/sbin/nginx -sstop";
$cfg_opts .= " --with-http_iconv_module";
warn "\n=== --with-threads ===\n";
$prefix = "/usr/local/openresty-threads";
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
cleanup();
unless ($opts{f}) {
sh "./configure $cfg_opts --with-threads --prefix=$prefix -j$jobs > /dev/null";
}
@ -168,7 +163,7 @@ sh "sudo $prefix/nginx/sbin/nginx -sstop";
warn "\n=== No Pool Build ===\n";
$prefix = "/usr/local/openresty-nopool";
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
cleanup();
unless ($opts{f}) {
sh "./configure --with-no-pool-patch $cfg_opts --prefix=$prefix -j$jobs > /dev/null";
}
@ -188,7 +183,7 @@ sh "sudo $prefix/nginx/sbin/nginx -sstop";
warn "\n=== Normal Build ===\n";
$prefix = "/usr/local/openresty";
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
cleanup();
unless ($opts{f}) {
sh "./configure $cfg_opts -j$jobs > /dev/null";
}
@ -202,11 +197,13 @@ sh "curl -si localhost/lua|grep $lua";
sh "curl -si localhost/lua|grep $ver";
sh "curl -si localhost/cjson|grep 'json.safe: '";
sh qq{$prefix/bin/resty -e 'ngx.say("Hello World!")'|grep 'Hello World'};
sh qq{$prefix/bin/restydoc -s listen | grep 'configures the port to accept HTTP/2'};
sh qq{$prefix/bin/restydoc opm | grep -E '^Status\$'};
sh "sudo $prefix/nginx/sbin/nginx -sstop";
warn "\n=== Debug Build ===\n";
$prefix = "/usr/local/openresty-debug";
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
cleanup();
unless ($opts{f}) {
my $more_cfg_opts = '';
if ($lua eq 'LuaJIT') {
@ -229,7 +226,7 @@ sh "sudo $prefix/nginx/sbin/nginx -sstop";
warn "\n=== DTrace Build ===\n";
$prefix = "/usr/local/openresty-dtrace";
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
cleanup();
unless ($opts{f}) {
sh "./configure $cfg_opts --with-dtrace-probes --prefix=$prefix -j$jobs > /dev/null";
}
@ -258,10 +255,15 @@ sub sh ($) {
system($cmd) == 0 or die "Command \"$cmd\" failed";
}
sub cleanup () {
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html"
. " $prefix/site $prefix/pod $prefix/resty.index";
}
__DATA__
user nobody;
worker_processes 1;
worker_processes 2;
error_log logs/error.log;
pid logs/nginx.pid;
@ -274,11 +276,11 @@ http {
include mime.types;
default_type application/octet-stream;
init_by_lua '
init_by_lua_block {
if jit then
require "resty.core"
end
';
}
upstream backend {
server 0.0.0.1;
@ -292,21 +294,21 @@ http {
server_name localhost;
location = /lua {
content_by_lua '
content_by_lua_block {
local upstream = require "ngx.upstream"
if jit then
ngx.say(jit.version)
else
ngx.say(_VERSION)
end
';
}
}
location = /cjson {
content_by_lua '
content_by_lua_block {
local json = require "cjson.safe"
ngx.say("cjson.safe: ", json.encode{foo = 123})
';
}
}
}
}

View File

@ -34,6 +34,13 @@ cd nginx-$ver || exit 1
# patch the patch
answer=`$root/util/ver-ge "$main_ver" 1.13.3`
if [ "$answer" = "N" ]; then
echo "$info_txt applying the patch for nginx security advisory (CVE-2017-7529)"
patch -p0 < $root/patches/patch.2017.ranges.txt || exit 1
echo
fi
answer=`$root/util/ver-ge "$main_ver" 1.5.12`
if [ "$answer" = "N" ]; then
echo "$info_txt applying the patch for nginx security advisory (CVE-2014-0133)"
@ -55,6 +62,48 @@ else
fi
fi
answer=`$root/util/ver-ge "$main_ver" 1.11.2`
if [ "$answer" = "Y" ]; then
echo "$info_txt applying the balancer_status_code patch"
patch -p1 < $root/patches/nginx-$main_ver-balancer_status_code.patch || exit 1
echo
fi
answer=`$root/util/ver-ge "$main_ver" 1.11.2`
if [ "$answer" = "Y" ]; then
echo "$info_txt applying the builtin_error_page_footer patch"
patch -p1 < $root/patches/nginx-$main_ver-builtin_error_page_footer.patch || exit 1
echo
fi
answer=`$root/util/ver-ge "$main_ver" 1.11.2`
if [ "$answer" = "Y" ]; then
echo "$info_txt applying the delayed-posted-events patch"
patch -p1 < $root/patches/nginx-$main_ver-delayed_posted_events.patch || exit 1
echo
fi
answer=`$root/util/ver-ge "$main_ver" 1.11.2`
if [ "$answer" = "Y" ]; then
echo "$info_txt applying the privileged-agent-process patch"
patch -p1 < $root/patches/nginx-$main_ver-privileged_agent_process.patch || exit 1
echo
fi
answer=`$root/util/ver-ge "$main_ver" 1.11.2`
if [ "$answer" = "Y" ]; then
echo "$info_txt applying the single-process-graceful-exit patch"
patch -p1 < $root/patches/nginx-$main_ver-single_process_graceful_exit.patch || exit 1
echo
fi
answer=`$root/util/ver-ge "$main_ver" 1.11.2`
if [ "$answer" = "Y" ]; then
echo "$info_txt applying the intercept-error-log patch"
patch -p1 < $root/patches/nginx-$main_ver-intercept_error_log.patch || exit 1
echo
fi
echo "$info_txt applying the upstream-pipelining patch for nginx"
patch -p1 < $root/patches/nginx-$main_ver-upstream_pipelining.patch || exit 1
echo
@ -333,6 +382,10 @@ echo "$info_txt applying the upstream_timeout_fields patch for nginx"
patch -p1 < $root/patches/nginx-$main_ver-upstream_timeout_fields.patch || exit 1
echo
echo "$info_txt applying the safe_resolver_ipv6_option patch for nginx"
patch -p1 < $root/patches/nginx-$main_ver-safe_resolver_ipv6_option.patch || exit 1
echo
cp $root/html/index.html docs/html/ || exit 1
cp $root/html/50x.html docs/html/ || exit 1
@ -347,7 +400,7 @@ rm -rf no-pool-nginx-$ver
#################################
ver=0.60
ver=0.61
$root/util/get-tarball "https://github.com/openresty/echo-nginx-module/tarball/v$ver" -O echo-nginx-module-$ver.tar.gz || exit 1
tar -xzf echo-nginx-module-$ver.tar.gz || exit 1
mv openresty-echo-nginx-module-* echo-nginx-module-$ver || exit 1
@ -389,28 +442,28 @@ mv openresty-rds-csv-nginx-module-* rds-csv-nginx-module-$ver || exit 1
#################################
ver=0.31
ver=0.32
$root/util/get-tarball "https://github.com/openresty/headers-more-nginx-module/tarball/v$ver" -O headers-more-nginx-module-$ver.tar.gz || exit 1
tar -xzf headers-more-nginx-module-$ver.tar.gz || exit 1
mv openresty-headers-more-nginx-module-* headers-more-nginx-module-$ver || exit 1
#################################
ver=0.1.9
ver=0.1.10
$root/util/get-tarball "https://github.com/openresty/drizzle-nginx-module/tarball/v$ver" -O drizzle-nginx-module-$ver.tar.gz || exit 1
tar -xzf drizzle-nginx-module-$ver.tar.gz || exit 1
mv openresty-drizzle-nginx-module-* drizzle-nginx-module-$ver || exit 1
#################################
ver=0.10.6
ver=0.10.10
$root/util/get-tarball "https://github.com/openresty/lua-nginx-module/tarball/v$ver" -O lua-nginx-module-$ver.tar.gz || exit 1
tar -xzf lua-nginx-module-$ver.tar.gz || exit 1
mv openresty-lua-nginx-module-* ngx_lua-$ver || exit 1
#################################
ver=0.06
ver=0.07
$root/util/get-tarball "https://github.com/openresty/lua-upstream-nginx-module/tarball/v$ver" -O lua-upstream-nginx-module-$ver.tar.gz || exit 1
tar -xzf lua-upstream-nginx-module-$ver.tar.gz || exit 1
mv openresty-lua-upstream-nginx-module-* ngx_lua_upstream-$ver || exit 1
@ -424,7 +477,7 @@ mv openresty-array-var-nginx-module-* array-var-nginx-module-$ver || exit 1
#################################
ver=0.17
ver=0.18
$root/util/get-tarball "https://github.com/openresty/memc-nginx-module/tarball/v$ver" -O memc-nginx-module-$ver.tar.gz || exit 1
tar -xzf memc-nginx-module-$ver.tar.gz || exit 1
mv openresty-memc-nginx-module-* memc-nginx-module-$ver || exit 1
@ -484,10 +537,10 @@ cd ..
#################################
ver=1.0rc7
$root/util/get-tarball "https://github.com/FRiCKLE/ngx_postgres/tarball/$ver" -O ngx_postgres-$ver.tar.gz || exit 1
ver=1.0
$root/util/get-tarball "https://github.com/openresty/ngx_postgres/tarball/$ver" -O ngx_postgres-$ver.tar.gz || exit 1
tar -xzf ngx_postgres-$ver.tar.gz || exit 1
mv FRiCKLE-ngx_postgres-* ngx_postgres-$ver || exit 1
mv openresty-ngx_postgres-* ngx_postgres-$ver || exit 1
#################################
@ -498,14 +551,14 @@ mv FRiCKLE-ngx_coolkit-* ngx_coolkit-$ver || exit 1
#################################
ver=0.13
ver=0.14
$root/util/get-tarball "https://github.com/openresty/redis2-nginx-module/tarball/v$ver" -O redis2-nginx-module-$ver.tar.gz || exit 1
tar -xzf redis2-nginx-module-$ver.tar.gz || exit 1
mv openresty-redis2-nginx-module-* redis2-nginx-module-$ver || exit 1
#################################
ver=0.13
ver=0.19
$root/util/get-tarball "https://github.com/openresty/resty-cli/tarball/v$ver" -O resty-cli-$ver.tar.gz || exit 1
tar -xzf resty-cli-$ver.tar.gz || exit 1
mv openresty-resty-cli-* resty-cli-$ver || exit 1
@ -513,9 +566,16 @@ resty_cli=resty-cli-$ver
#################################
ver=5.1.5
$root/util/get-tarball "http://www.lua.org/ftp/lua-$ver.tar.gz" -O "lua-$ver.tar.gz" || exit 1
tar -xzf lua-$ver.tar.gz || exit 1
ver=0.0.3
$root/util/get-tarball "https://github.com/openresty/opm/tarball/v$ver" -O opm-$ver.tar.gz || exit 1
tar -xzf opm-$ver.tar.gz || exit 1
mv openresty-opm-* opm-$ver || exit 1
#################################
#ver=5.1.5
#$root/util/get-tarball "http://www.lua.org/ftp/lua-$ver.tar.gz" -O "lua-$ver.tar.gz" || exit 1
#tar -xzf lua-$ver.tar.gz || exit 1
#$root/util/get-tarball "http://agentzh.org/misc/nginx/patch-lua-$ver-4" -O "patch-lua-$ver-4" || exit 1
@ -525,21 +585,21 @@ tar -xzf lua-$ver.tar.gz || exit 1
#rm "patch-lua-$ver-4" || exit 1
echo "$info_txt applying the makefile_install_fix patch for lua $ver"
patch -p0 < $root/patches/lua-$ver-makefile_install_fix.patch || exit 1
echo
#echo "$info_txt applying the makefile_install_fix patch for lua $ver"
#patch -p0 < $root/patches/lua-$ver-makefile_install_fix.patch || exit 1
#echo
echo "$info_txt applying the disable_lua50_compat patch for lua $ver"
patch -p0 < $root/patches/lua-$ver-disable_lua50_compat.patch || exit 1
echo
#echo "$info_txt applying the disable_lua50_compat patch for lua $ver"
#patch -p0 < $root/patches/lua-$ver-disable_lua50_compat.patch || exit 1
#echo
echo "$info_txt applying the enable_debug_info patch for lua $ver"
patch -p0 < $root/patches/lua-$ver-enable_debug_info.patch || exit 1
echo
#echo "$info_txt applying the enable_debug_info patch for lua $ver"
#patch -p0 < $root/patches/lua-$ver-enable_debug_info.patch || exit 1
#echo
#################################
ver=2.1-20160517
ver=2.1-20170808
$root/util/get-tarball "https://github.com/openresty/luajit2/archive/v$ver.tar.gz" -O "LuaJIT-$ver.tar.gz" || exit 1
tar -xzf LuaJIT-$ver.tar.gz || exit 1
mv luajit2-* LuaJIT-$ver || exit 1
@ -560,7 +620,7 @@ cd .. || exit 1
#################################
ver=2.1.0.4
ver=2.1.0.5
$root/util/get-tarball "https://github.com/openresty/lua-cjson/archive/$ver.tar.gz" -O "lua-cjson-$ver.tar.gz" || exit 1
tar -xzf lua-cjson-$ver.tar.gz || exit 1
#cd lua-cjson-$ver || exit 1
@ -571,10 +631,10 @@ tar -xzf lua-cjson-$ver.tar.gz || exit 1
#################################
ver=0.12
$root/util/get-tarball "https://github.com/openresty/lua-redis-parser/tarball/v$ver" -O "lua-redis-parser-$ver.tar.gz" || exit 1
ver=0.13
$root/util/get-tarball "https://github.com/openresty/lua-redis-parser/archive/v$ver.tar.gz" -O "lua-redis-parser-$ver.tar.gz" || exit 1
tar -xzf lua-redis-parser-$ver.tar.gz || exit 1
mv openresty-lua-redis-parser-* lua-redis-parser-$ver || exit 1
#mv lua-redis-parser-* lua-redis-parser-$ver || exit 1
#cd lua-redis-parser-$ver || exit 1
#patch -p1 < $root/patches/lua_cjson-$ver-array_detection_fix.patch || exit 1
#sed 's/\$(DESTDIR)\//$(DESTDIR)/g' Makefile > mk || exit 1
@ -595,7 +655,7 @@ cd ..
#################################
ver=0.17
ver=0.19
$root/util/get-tarball "https://github.com/openresty/lua-resty-dns/tarball/v$ver" -O "lua-resty-dns-$ver.tar.gz" || exit 1
tar -xzf lua-resty-dns-$ver.tar.gz || exit 1
mv openresty-lua-resty-dns-* lua-resty-dns-$ver || exit 1
@ -619,7 +679,7 @@ cd ..
#################################
ver=0.25
ver=0.26
$root/util/get-tarball "https://github.com/openresty/lua-resty-redis/tarball/v$ver" -O "lua-resty-redis-$ver.tar.gz" || exit 1
tar -xzf lua-resty-redis-$ver.tar.gz || exit 1
mv openresty-lua-resty-redis-* lua-resty-redis-$ver || exit 1
@ -631,7 +691,7 @@ mv openresty-lua-resty-redis-* lua-resty-redis-$ver || exit 1
#################################
ver=0.16
ver=0.20
$root/util/get-tarball "https://github.com/openresty/lua-resty-mysql/tarball/v$ver" -O "lua-resty-mysql-$ver.tar.gz" || exit 1
tar -xzf lua-resty-mysql-$ver.tar.gz || exit 1
mv openresty-lua-resty-mysql-* lua-resty-mysql-$ver || exit 1
@ -643,7 +703,19 @@ cd ..
#################################
ver=0.09
ver=0.04
$root/util/get-tarball "https://github.com/openresty/lua-resty-limit-traffic/tarball/v$ver" -O "lua-resty-limit-traffic-$ver.tar.gz" || exit 1
tar -xzf lua-resty-limit-traffic-$ver.tar.gz || exit 1
mv openresty-lua-resty-limit-traffic-* lua-resty-limit-traffic-$ver || exit 1
cd lua-resty-limit-traffic-$ver || exit 1
#patch -p1 < $root/patches/lua_cjson-$ver-array_detection_fix.patch || exit 1
sed 's/\$(DESTDIR)\//$(DESTDIR)/g' Makefile > mk || exit 1
mv mk Makefile || exit 1
cd ..
#################################
ver=0.10
$root/util/get-tarball "https://github.com/openresty/lua-resty-upload/tarball/v$ver" -O "lua-resty-upload-$ver.tar.gz" || exit 1
tar -xzf lua-resty-upload-$ver.tar.gz || exit 1
mv openresty-lua-resty-upload-* lua-resty-upload-$ver || exit 1
@ -655,7 +727,7 @@ cd ..
#################################
ver=0.09
ver=0.10
$root/util/get-tarball "https://github.com/openresty/lua-resty-string/tarball/v$ver" -O "lua-resty-string-$ver.tar.gz" || exit 1
tar -xzf lua-resty-string-$ver.tar.gz || exit 1
mv openresty-lua-resty-string-* lua-resty-string-$ver || exit 1
@ -667,7 +739,7 @@ cd ..
#################################
ver=0.05
ver=0.06
$root/util/get-tarball "https://github.com/openresty/lua-resty-websocket/tarball/v$ver" -O "lua-resty-websocket-$ver.tar.gz" || exit 1
tar -xzf lua-resty-websocket-$ver.tar.gz || exit 1
mv openresty-lua-resty-websocket-* lua-resty-websocket-$ver || exit 1
@ -679,7 +751,7 @@ cd ..
#################################
ver=0.04
ver=0.07
$root/util/get-tarball "https://github.com/openresty/lua-resty-lock/tarball/v$ver" -O "lua-resty-lock-$ver.tar.gz" || exit 1
tar -xzf lua-resty-lock-$ver.tar.gz || exit 1
mv openresty-lua-resty-lock-* lua-resty-lock-$ver || exit 1
@ -691,7 +763,7 @@ cd ..
#################################
ver=0.04
ver=0.07
$root/util/get-tarball "https://github.com/openresty/lua-resty-lrucache/tarball/v$ver" -O "lua-resty-lrucache-$ver.tar.gz" || exit 1
tar -xzf lua-resty-lrucache-$ver.tar.gz || exit 1
mv openresty-lua-resty-lrucache-* lua-resty-lrucache-$ver || exit 1
@ -703,7 +775,7 @@ cd ..
#################################
ver=0.1.8
ver=0.1.12
$root/util/get-tarball "https://github.com/openresty/lua-resty-core/tarball/v$ver" -O "lua-resty-core-$ver.tar.gz" || exit 1
tar -xzf lua-resty-core-$ver.tar.gz || exit 1
mv openresty-lua-resty-core-* lua-resty-core-$ver || exit 1
@ -715,7 +787,7 @@ mv openresty-lua-resty-core-* lua-resty-core-$ver || exit 1
#################################
ver=0.04
ver=0.05
$root/util/get-tarball "https://github.com/openresty/lua-resty-upstream-healthcheck/tarball/v$ver" -O "lua-resty-upstream-healthcheck-$ver.tar.gz" || exit 1
tar -xzf lua-resty-upstream-healthcheck-$ver.tar.gz || exit 1
mv openresty-lua-resty-upstream-healthcheck-* lua-resty-upstream-healthcheck-$ver || exit 1
@ -739,7 +811,6 @@ cp $root/util/build-win32.sh util/ || exit 1
cp $root/COPYRIGHT ./ || exit 1
perl bundle/$resty_cli/bin/md2pod.pl $root/doc/README-win32.md | pod2text > README-win32.txt || exit 1
unix2dos README-win32.txt || exit 1
find bundle -name '*~' -delete
mkdir patches/ || exit 1
cp $root/patches/openssl-1.0.2h-sess_set_get_cb_yield.patch patches/ || exit 1
@ -763,7 +834,7 @@ else
fi
cd nginx.org/ || exit 1
$nginx_xml2pod xml/en/docs || exit 1
cd $curdir
cd $curdir || exit 1
echo "restydoc-index $root/work/nginx.org"
$restydoc_index --outdir bundle $root/work/nginx.org || exit 1
@ -783,14 +854,15 @@ for indir in bundle/*/; do
if [ "$indir" == "bundle/nginx-$main_ver/" ]; then
continue
fi
echo "restydoc-index $indir"
$restydoc_index --outdir bundle $indir || exit 1
echo "restydoc-index --outdir bundle $indir"
$restydoc_index --outdir $curdir/bundle $indir || exit 1
done
cd $curdir || exit 1
find bundle -name '*.md' -delete
find bundle -name '*.markdown' -delete
find bundle -name '*.wiki' -delete
find bundle -name '*~' -delete
cd $root || exit 1

View File

@ -1,7 +1,7 @@
#!/bin/bash
main_ver=1.11.2
minor_ver=1
minor_ver=5
version=$main_ver.$minor_ver
echo $version