mirror of
https://github.com/openresty/openresty.git
synced 2024-10-13 00:29:41 +00:00
Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
da90bd7671 | |||
4a80309873 | |||
383901b193 | |||
9bd838251f | |||
e5fd373848 | |||
db38504310 | |||
2351c7c7aa | |||
f3d36df365 | |||
220b940e66 | |||
c0c2f883e9 |
@ -451,21 +451,6 @@ index ef4a647..49bb30b 100644
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/src/core/ngx_thread_pool.h b/src/core/ngx_thread_pool.h
|
|
||||||
index 5e5adf6..5999525 100644
|
|
||||||
--- a/src/core/ngx_thread_pool.h
|
|
||||||
+++ b/src/core/ngx_thread_pool.h
|
|
||||||
@@ -23,7 +23,10 @@ struct ngx_thread_task_s {
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
+#ifndef NGX_DEFINE_THREAD_POOL_T
|
|
||||||
+#define NGX_DEFINE_THREAD_POOL_T 1
|
|
||||||
typedef struct ngx_thread_pool_s ngx_thread_pool_t;
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
|
|
||||||
ngx_thread_pool_t *ngx_thread_pool_add(ngx_conf_t *cf, ngx_str_t *name);
|
|
||||||
diff --git a/src/dtrace/nginx.stp b/src/dtrace/nginx.stp
|
diff --git a/src/dtrace/nginx.stp b/src/dtrace/nginx.stp
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..e824daf
|
index 0000000..e824daf
|
||||||
@ -831,10 +816,10 @@ index 0000000..1bca4cf
|
|||||||
+
|
+
|
||||||
diff --git a/src/event/ngx_event_probe.h b/src/event/ngx_event_probe.h
|
diff --git a/src/event/ngx_event_probe.h b/src/event/ngx_event_probe.h
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..9fa2a82
|
index 0000000..5aa0397
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/event/ngx_event_probe.h
|
+++ b/src/event/ngx_event_probe.h
|
||||||
@@ -0,0 +1,40 @@
|
@@ -0,0 +1,33 @@
|
||||||
+#ifndef _NGX_EVENT_PROBE_H_INCLUDED_
|
+#ifndef _NGX_EVENT_PROBE_H_INCLUDED_
|
||||||
+#define _NGX_EVENT_PROBE_H_INCLUDED_
|
+#define _NGX_EVENT_PROBE_H_INCLUDED_
|
||||||
+
|
+
|
||||||
@ -846,13 +831,6 @@ index 0000000..9fa2a82
|
|||||||
+
|
+
|
||||||
+#if (NGX_DTRACE)
|
+#if (NGX_DTRACE)
|
||||||
+
|
+
|
||||||
+#if (NGX_THREADS)
|
|
||||||
+# ifndef NGX_DEFINE_THREAD_POOL_T
|
|
||||||
+# define NGX_DEFINE_THREAD_POOL_T 1
|
|
||||||
+typedef struct ngx_thread_pool_s ngx_thread_pool_t;
|
|
||||||
+# endif
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#include <ngx_http.h>
|
+#include <ngx_http.h>
|
||||||
+#include <ngx_dtrace_provider.h>
|
+#include <ngx_dtrace_provider.h>
|
||||||
+
|
+
|
||||||
@ -876,10 +854,18 @@ index 0000000..9fa2a82
|
|||||||
+
|
+
|
||||||
+#endif /* _NGX_EVENT_PROBE_H_INCLUDED_ */
|
+#endif /* _NGX_EVENT_PROBE_H_INCLUDED_ */
|
||||||
diff --git a/src/event/ngx_event_timer.c b/src/event/ngx_event_timer.c
|
diff --git a/src/event/ngx_event_timer.c b/src/event/ngx_event_timer.c
|
||||||
index 8f547b2..e12a51e 100644
|
index 8f547b2..6e77465 100644
|
||||||
--- a/src/event/ngx_event_timer.c
|
--- a/src/event/ngx_event_timer.c
|
||||||
+++ b/src/event/ngx_event_timer.c
|
+++ b/src/event/ngx_event_timer.c
|
||||||
@@ -91,6 +91,8 @@ ngx_event_expire_timers(void)
|
@@ -8,6 +8,7 @@
|
||||||
|
#include <ngx_config.h>
|
||||||
|
#include <ngx_core.h>
|
||||||
|
#include <ngx_event.h>
|
||||||
|
+#include <ngx_event_probe.h>
|
||||||
|
|
||||||
|
|
||||||
|
ngx_rbtree_t ngx_event_timer_rbtree;
|
||||||
|
@@ -91,6 +92,8 @@ ngx_event_expire_timers(void)
|
||||||
|
|
||||||
ev->timedout = 1;
|
ev->timedout = 1;
|
||||||
|
|
||||||
@ -888,32 +874,61 @@ index 8f547b2..e12a51e 100644
|
|||||||
ev->handler(ev);
|
ev->handler(ev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -136,3 +139,19 @@ ngx_event_cancel_timers(void)
|
||||||
|
ev->handler(ev);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+#if (NGX_DTRACE)
|
||||||
|
+void
|
||||||
|
+ngx_event_probe_timer_add_helper(ngx_event_t *ev, ngx_msec_t timer)
|
||||||
|
+{
|
||||||
|
+ ngx_event_probe_timer_add(ev, timer);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+void
|
||||||
|
+ngx_event_probe_timer_del_helper(ngx_event_t *ev)
|
||||||
|
+{
|
||||||
|
+ ngx_event_probe_timer_del(ev);
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
diff --git a/src/event/ngx_event_timer.h b/src/event/ngx_event_timer.h
|
diff --git a/src/event/ngx_event_timer.h b/src/event/ngx_event_timer.h
|
||||||
index 99f8a48..79c3fa0 100644
|
index 99f8a48..8bc619a 100644
|
||||||
--- a/src/event/ngx_event_timer.h
|
--- a/src/event/ngx_event_timer.h
|
||||||
+++ b/src/event/ngx_event_timer.h
|
+++ b/src/event/ngx_event_timer.h
|
||||||
@@ -12,6 +12,7 @@
|
@@ -25,12 +25,23 @@ void ngx_event_expire_timers(void);
|
||||||
#include <ngx_config.h>
|
void ngx_event_cancel_timers(void);
|
||||||
#include <ngx_core.h>
|
|
||||||
#include <ngx_event.h>
|
|
||||||
+#include <ngx_event_probe.h>
|
+#if (NGX_DTRACE)
|
||||||
|
+void ngx_event_probe_timer_add_helper(ngx_event_t *ev,
|
||||||
|
+ ngx_msec_t timer);
|
||||||
|
+void ngx_event_probe_timer_del_helper(ngx_event_t *ev);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+
|
||||||
|
extern ngx_rbtree_t ngx_event_timer_rbtree;
|
||||||
|
|
||||||
|
|
||||||
#define NGX_TIMER_INFINITE (ngx_msec_t) -1
|
|
||||||
@@ -31,6 +32,8 @@ extern ngx_rbtree_t ngx_event_timer_rbtree;
|
|
||||||
static ngx_inline void
|
static ngx_inline void
|
||||||
ngx_event_del_timer(ngx_event_t *ev)
|
ngx_event_del_timer(ngx_event_t *ev)
|
||||||
{
|
{
|
||||||
+ ngx_event_probe_timer_del(ev);
|
+#if (NGX_DTRACE)
|
||||||
|
+ ngx_event_probe_timer_del_helper(ev);
|
||||||
|
+#endif
|
||||||
+
|
+
|
||||||
ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
|
ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
|
||||||
"event timer del: %d: %M",
|
"event timer del: %d: %M",
|
||||||
ngx_event_ident(ev->data), ev->timer.key);
|
ngx_event_ident(ev->data), ev->timer.key);
|
||||||
@@ -77,6 +80,8 @@ ngx_event_add_timer(ngx_event_t *ev, ngx_msec_t timer)
|
@@ -77,6 +88,10 @@ ngx_event_add_timer(ngx_event_t *ev, ngx_msec_t timer)
|
||||||
|
|
||||||
ev->timer.key = key;
|
ev->timer.key = key;
|
||||||
|
|
||||||
+ ngx_event_probe_timer_add(ev, timer);
|
+#if (NGX_DTRACE)
|
||||||
|
+ ngx_event_probe_timer_add_helper(ev, timer);
|
||||||
|
+#endif
|
||||||
+
|
+
|
||||||
ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0,
|
ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0,
|
||||||
"event timer add: %d: %M:%M",
|
"event timer add: %d: %M:%M",
|
||||||
|
42
patches/nginx-1.9.7-ssl_cert_cb_yield.patch
Normal file
42
patches/nginx-1.9.7-ssl_cert_cb_yield.patch
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# User Yichun Zhang <agentzh@openresty.org>
|
||||||
|
# Date 1451762084 28800
|
||||||
|
# Sat Jan 02 11:14:44 2016 -0800
|
||||||
|
# Node ID 449f0461859c16e95bdb18e8be6b94401545d3dd
|
||||||
|
# Parent 78b4e10b4367b31367aad3c83c9c3acdd42397c4
|
||||||
|
SSL: handled SSL_CTX_set_cert_cb() callback yielding.
|
||||||
|
|
||||||
|
OpenSSL 1.0.2+ introduces SSL_CTX_set_cert_cb() to allow custom
|
||||||
|
callbacks to serve the SSL certificiates and private keys dynamically
|
||||||
|
and lazily. The callbacks may yield for nonblocking I/O or sleeping.
|
||||||
|
Here we added support for such usage in NGINX 3rd-party modules
|
||||||
|
(like ngx_lua) in NGINX's event handlers for downstream SSL
|
||||||
|
connections.
|
||||||
|
|
||||||
|
diff -r 78b4e10b4367 -r 449f0461859c src/event/ngx_event_openssl.c
|
||||||
|
--- a/src/event/ngx_event_openssl.c Thu Dec 17 16:39:15 2015 +0300
|
||||||
|
+++ b/src/event/ngx_event_openssl.c Sat Jan 02 11:14:44 2016 -0800
|
||||||
|
@@ -1210,6 +1210,23 @@
|
||||||
|
return NGX_AGAIN;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#if OPENSSL_VERSION_NUMBER >= 0x10002000L
|
||||||
|
+ if (sslerr == SSL_ERROR_WANT_X509_LOOKUP) {
|
||||||
|
+ c->read->handler = ngx_ssl_handshake_handler;
|
||||||
|
+ c->write->handler = ngx_ssl_handshake_handler;
|
||||||
|
+
|
||||||
|
+ if (ngx_handle_read_event(c->read, 0) != NGX_OK) {
|
||||||
|
+ return NGX_ERROR;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (ngx_handle_write_event(c->write, 0) != NGX_OK) {
|
||||||
|
+ return NGX_ERROR;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return NGX_AGAIN;
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
err = (sslerr == SSL_ERROR_SYSCALL) ? ngx_errno : 0;
|
||||||
|
|
||||||
|
c->ssl->no_wait_shutdown = 1;
|
312
t/sanity.t
312
t/sanity.t
File diff suppressed because it is too large
Load Diff
@ -46,8 +46,10 @@ if ($^O eq 'solaris') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($^O eq 'darwin') {
|
if ($^O eq 'darwin') {
|
||||||
$cfg_opts .= " --with-cc-opt='-I/usr/local/include'"
|
$cfg_opts .= " --with-cc-opt='-I/usr/local/opt/openssl/include/ "
|
||||||
. " --with-ld-opt='-L/usr/local/lib'";
|
. "-I/usr/local/opt/pcre/include/'"
|
||||||
|
. " --with-ld-opt='-L/usr/local/opt/openssl/lib/ "
|
||||||
|
. "-L/usr/local/opt/pcre/lib/'";
|
||||||
}
|
}
|
||||||
|
|
||||||
my $prefix;
|
my $prefix;
|
||||||
@ -65,6 +67,45 @@ sub write_config_file ($) {
|
|||||||
|
|
||||||
write_config_file "/tmp/nginx.conf";
|
write_config_file "/tmp/nginx.conf";
|
||||||
|
|
||||||
|
warn "=== --with-stream ===\n";
|
||||||
|
$prefix = "/usr/local/openresty-nogzip";
|
||||||
|
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
|
||||||
|
unless ($opts{f}) {
|
||||||
|
sh "./configure $cfg_opts --with-stream --prefix=$prefix -j$jobs > /dev/null";
|
||||||
|
}
|
||||||
|
sh "$make -j$jobs > /dev/null";
|
||||||
|
sh "sudo $make install > /dev/null";
|
||||||
|
sh "sudo cp /tmp/nginx.conf $prefix/nginx/conf/nginx.conf";
|
||||||
|
sh "$prefix/nginx/sbin/nginx -V 2>&1 |grep $ver";
|
||||||
|
sh "$prefix/nginx/sbin/nginx -V 2>&1 |grep '\\--with-stream'";
|
||||||
|
system "sudo killall nginx > /dev/null 2>&1";
|
||||||
|
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 "sudo $prefix/nginx/sbin/nginx -sstop";
|
||||||
|
|
||||||
|
warn "=== --with-stream + dtrace static probes ===\n";
|
||||||
|
$prefix = "/usr/local/openresty-nogzip";
|
||||||
|
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
|
||||||
|
unless ($opts{f}) {
|
||||||
|
sh "./configure $cfg_opts --with-dtrace-probes --with-stream --prefix=$prefix -j$jobs > /dev/null";
|
||||||
|
}
|
||||||
|
sh "$make -j$jobs > /dev/null";
|
||||||
|
sh "sudo $make install > /dev/null";
|
||||||
|
sh "sudo cp /tmp/nginx.conf $prefix/nginx/conf/nginx.conf";
|
||||||
|
sh "$prefix/nginx/sbin/nginx -V 2>&1 |grep $ver";
|
||||||
|
sh "$prefix/nginx/sbin/nginx -V 2>&1 |grep '\\--with-stream'";
|
||||||
|
sh "$prefix/nginx/sbin/nginx -V 2>&1 |grep '\\--with-dtrace-probes'";
|
||||||
|
system "sudo killall nginx > /dev/null 2>&1";
|
||||||
|
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 "sudo $prefix/nginx/sbin/nginx -sstop";
|
||||||
|
|
||||||
warn "=== Without Gzip/SSL/PCRE ===\n";
|
warn "=== Without Gzip/SSL/PCRE ===\n";
|
||||||
$prefix = "/usr/local/openresty-nogzip";
|
$prefix = "/usr/local/openresty-nogzip";
|
||||||
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
|
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
|
||||||
@ -221,6 +262,13 @@ http {
|
|||||||
end
|
end
|
||||||
';
|
';
|
||||||
|
|
||||||
|
upstream backend {
|
||||||
|
server 0.0.0.1;
|
||||||
|
balancer_by_lua_block {
|
||||||
|
print("balancer!")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen *:80;
|
listen *:80;
|
||||||
server_name localhost;
|
server_name localhost;
|
||||||
|
@ -299,6 +299,10 @@ echo "$info_txt applying the always_enable_cc_feature_tests patch to nginx"
|
|||||||
patch -p1 < $root/patches/nginx-$main_ver-always_enable_cc_feature_tests.patch
|
patch -p1 < $root/patches/nginx-$main_ver-always_enable_cc_feature_tests.patch
|
||||||
echo
|
echo
|
||||||
|
|
||||||
|
echo "$info_txt applying the ssl_cert_cb_yield.patch patch to nginx"
|
||||||
|
patch -p1 < $root/patches/nginx-$main_ver-ssl_cert_cb_yield.patch
|
||||||
|
echo
|
||||||
|
|
||||||
cd .. || exit 1
|
cd .. || exit 1
|
||||||
|
|
||||||
cp $root/patches/nginx-$main_ver-no_pool.patch ./nginx-no_pool.patch || exit 1
|
cp $root/patches/nginx-$main_ver-no_pool.patch ./nginx-no_pool.patch || exit 1
|
||||||
@ -366,7 +370,7 @@ mv openresty-drizzle-nginx-module-* drizzle-nginx-module-$ver || exit 1
|
|||||||
|
|
||||||
#################################
|
#################################
|
||||||
|
|
||||||
ver=0.9.20
|
ver=0.10.0
|
||||||
$root/util/get-tarball "https://github.com/openresty/lua-nginx-module/tarball/v$ver" -O lua-nginx-module-$ver.tar.gz || exit 1
|
$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
|
tar -xzf lua-nginx-module-$ver.tar.gz || exit 1
|
||||||
mv openresty-lua-nginx-module-* ngx_lua-$ver || exit 1
|
mv openresty-lua-nginx-module-* ngx_lua-$ver || exit 1
|
||||||
@ -501,7 +505,7 @@ echo
|
|||||||
|
|
||||||
#################################
|
#################################
|
||||||
|
|
||||||
ver=2.1-20151219
|
ver=2.1-20160108
|
||||||
$root/util/get-tarball "https://github.com/openresty/luajit2/archive/v$ver.tar.gz" -O "LuaJIT-$ver.tar.gz" || exit 1
|
$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
|
tar -xzf LuaJIT-$ver.tar.gz || exit 1
|
||||||
mv luajit2-* LuaJIT-$ver || exit 1
|
mv luajit2-* LuaJIT-$ver || exit 1
|
||||||
@ -665,7 +669,7 @@ cd ..
|
|||||||
|
|
||||||
#################################
|
#################################
|
||||||
|
|
||||||
ver=0.1.3
|
ver=0.1.4
|
||||||
$root/util/get-tarball "https://github.com/openresty/lua-resty-core/tarball/v$ver" -O "lua-resty-core-$ver.tar.gz" || exit 1
|
$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
|
tar -xzf lua-resty-core-$ver.tar.gz || exit 1
|
||||||
mv openresty-lua-resty-core-* lua-resty-core-$ver || exit 1
|
mv openresty-lua-resty-core-* lua-resty-core-$ver || exit 1
|
||||||
|
Reference in New Issue
Block a user