Tue Feb 14 10:10:55 2017 UTC ()
Patch Nginx eventport support to fix a situation where Nginx can stop servicing events when port_getn() returns a timeout.


(fhajny)
diff -r1.53 -r1.54 pkgsrc/www/nginx/distinfo
diff -r1.22 -r1.23 pkgsrc/www/nginx-devel/distinfo
diff -r0 -r1.1 pkgsrc/www/nginx-devel/patches/patch-src_event_modules_ngx__eventport__module.c
diff -r0 -r1.1 pkgsrc/www/nginx/patches/patch-src_event_modules_ngx__eventport__module.c

cvs diff -r1.53 -r1.54 pkgsrc/www/nginx/distinfo (expand / switch to unified diff)

--- pkgsrc/www/nginx/distinfo 2016/11/24 11:35:23 1.53
+++ pkgsrc/www/nginx/distinfo 2017/02/14 10:10:55 1.54
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1$NetBSD: distinfo,v 1.53 2016/11/24 11:35:23 maya Exp $ 1$NetBSD: distinfo,v 1.54 2017/02/14 10:10:55 fhajny Exp $
2 2
3SHA1 (array-var-nginx-module-0.04.tar.gz) = 1fd3bdd05c2d1d7667ed6f7baa612ddf7f630df3 3SHA1 (array-var-nginx-module-0.04.tar.gz) = 1fd3bdd05c2d1d7667ed6f7baa612ddf7f630df3
4RMD160 (array-var-nginx-module-0.04.tar.gz) = a751a2ce87dcfb88d072779097b4df9f42a415e4 4RMD160 (array-var-nginx-module-0.04.tar.gz) = a751a2ce87dcfb88d072779097b4df9f42a415e4
5SHA512 (array-var-nginx-module-0.04.tar.gz) = a45905338d2fdac002eaa43f7bff1fa48edcdcf9299de5c47725c2f6d86830f390fbdefc0ebe7492222e53de113439ea754ce63e20dc0245cf82e3247bb855f2 5SHA512 (array-var-nginx-module-0.04.tar.gz) = a45905338d2fdac002eaa43f7bff1fa48edcdcf9299de5c47725c2f6d86830f390fbdefc0ebe7492222e53de113439ea754ce63e20dc0245cf82e3247bb855f2
6Size (array-var-nginx-module-0.04.tar.gz) = 10777 bytes 6Size (array-var-nginx-module-0.04.tar.gz) = 10777 bytes
7SHA1 (echo-nginx-module-0.59.tar.gz) = 83cedd03405e86dde573d5c90a24ac6d7bf25ad5 7SHA1 (echo-nginx-module-0.59.tar.gz) = 83cedd03405e86dde573d5c90a24ac6d7bf25ad5
8RMD160 (echo-nginx-module-0.59.tar.gz) = 2caa40d531c0e19f0cdaa93c854e169f8f9375a2 8RMD160 (echo-nginx-module-0.59.tar.gz) = 2caa40d531c0e19f0cdaa93c854e169f8f9375a2
9SHA512 (echo-nginx-module-0.59.tar.gz) = 803c431da00160f62ee98e126d244fb97b2d9dca08137daabf55504f012598f8e2c689841c2e8bfced5f07ce24c46933c49b3feffc09ca0b5f07dc10e34546ee 9SHA512 (echo-nginx-module-0.59.tar.gz) = 803c431da00160f62ee98e126d244fb97b2d9dca08137daabf55504f012598f8e2c689841c2e8bfced5f07ce24c46933c49b3feffc09ca0b5f07dc10e34546ee
10Size (echo-nginx-module-0.59.tar.gz) = 52703 bytes 10Size (echo-nginx-module-0.59.tar.gz) = 52703 bytes
11SHA1 (encrypted-session-nginx-module-0.05.tar.gz) = 0d96ec039f98fae95ce315946bd4ad12128a426c 11SHA1 (encrypted-session-nginx-module-0.05.tar.gz) = 0d96ec039f98fae95ce315946bd4ad12128a426c
12RMD160 (encrypted-session-nginx-module-0.05.tar.gz) = 2e8f92d1841c9352cf9c2c775565a60cb840d2ff 12RMD160 (encrypted-session-nginx-module-0.05.tar.gz) = 2e8f92d1841c9352cf9c2c775565a60cb840d2ff
13SHA512 (encrypted-session-nginx-module-0.05.tar.gz) = eb11560945f614b110034a7fc461a23057cd8fdc50af7abaaec00fb4991c4dfec25ddfc56d3458de5bd601f0d9990dd235605432d46c5a1852be2f69317a5761 13SHA512 (encrypted-session-nginx-module-0.05.tar.gz) = eb11560945f614b110034a7fc461a23057cd8fdc50af7abaaec00fb4991c4dfec25ddfc56d3458de5bd601f0d9990dd235605432d46c5a1852be2f69317a5761
14Size (encrypted-session-nginx-module-0.05.tar.gz) = 10462 bytes 14Size (encrypted-session-nginx-module-0.05.tar.gz) = 10462 bytes
@@ -37,13 +37,14 @@ RMD160 (nginx_http_push_module-0.731.tar @@ -37,13 +37,14 @@ RMD160 (nginx_http_push_module-0.731.tar
37SHA512 (nginx_http_push_module-0.731.tar.gz) = b95e6e88236d920e18c927a5bdf7d84210ba34b234e7c20ba09d114337a4494535c94c7e84926e5479b23d4eba4e2f1db0a3e7d8b017c9907a4a824cd25098d8 37SHA512 (nginx_http_push_module-0.731.tar.gz) = b95e6e88236d920e18c927a5bdf7d84210ba34b234e7c20ba09d114337a4494535c94c7e84926e5479b23d4eba4e2f1db0a3e7d8b017c9907a4a824cd25098d8
38Size (nginx_http_push_module-0.731.tar.gz) = 50346 bytes 38Size (nginx_http_push_module-0.731.tar.gz) = 50346 bytes
39SHA1 (ngx_devel_kit-0.3.0.tar.gz) = b556d068db23037be30436af559795f45dd93c67 39SHA1 (ngx_devel_kit-0.3.0.tar.gz) = b556d068db23037be30436af559795f45dd93c67
40RMD160 (ngx_devel_kit-0.3.0.tar.gz) = beb2736eb06e8e26f60643623553789346f653da 40RMD160 (ngx_devel_kit-0.3.0.tar.gz) = beb2736eb06e8e26f60643623553789346f653da
41SHA512 (ngx_devel_kit-0.3.0.tar.gz) = 558764c9be913a4f61d0e277d07bf3c272e1ce086b3fadb85b693a7e92805cd9fca4da7a8d29c96e53fc0d23b331327d3b2561ff61f19d2330e7d5d35ac7d614 41SHA512 (ngx_devel_kit-0.3.0.tar.gz) = 558764c9be913a4f61d0e277d07bf3c272e1ce086b3fadb85b693a7e92805cd9fca4da7a8d29c96e53fc0d23b331327d3b2561ff61f19d2330e7d5d35ac7d614
42Size (ngx_devel_kit-0.3.0.tar.gz) = 66455 bytes 42Size (ngx_devel_kit-0.3.0.tar.gz) = 66455 bytes
43SHA1 (set-misc-nginx-module-0.30.tar.gz) = a56b4d9bd33df2117803c93e1edde8b8bcd6e507 43SHA1 (set-misc-nginx-module-0.30.tar.gz) = a56b4d9bd33df2117803c93e1edde8b8bcd6e507
44RMD160 (set-misc-nginx-module-0.30.tar.gz) = 6eec9e0828e4ef6339ecc5e53bf4580cf1e18fc3 44RMD160 (set-misc-nginx-module-0.30.tar.gz) = 6eec9e0828e4ef6339ecc5e53bf4580cf1e18fc3
45SHA512 (set-misc-nginx-module-0.30.tar.gz) = f081fc7e8e03f1a61b665d8798999f14d6516c317a039e35635f6368188f73a583c3320a5d41f000868b87e5c78e4796168e9d3d3a68325f3c642bf5b3458e2e 45SHA512 (set-misc-nginx-module-0.30.tar.gz) = f081fc7e8e03f1a61b665d8798999f14d6516c317a039e35635f6368188f73a583c3320a5d41f000868b87e5c78e4796168e9d3d3a68325f3c642bf5b3458e2e
46Size (set-misc-nginx-module-0.30.tar.gz) = 28584 bytes 46Size (set-misc-nginx-module-0.30.tar.gz) = 28584 bytes
47SHA1 (patch-aa) = 47f0c19b47b115f00ea6e9432d5bb12058c3bc1c 47SHA1 (patch-aa) = 47f0c19b47b115f00ea6e9432d5bb12058c3bc1c
48SHA1 (patch-ab) = 7d126a4372aa8575ef01a4bfd9aec9898861c763 48SHA1 (patch-ab) = 7d126a4372aa8575ef01a4bfd9aec9898861c763
49SHA1 (patch-auto_lib_pcre_conf) = 500f16808c07ae2fd4016dd662b6f1b0b1efbb91 49SHA1 (patch-auto_lib_pcre_conf) = 500f16808c07ae2fd4016dd662b6f1b0b1efbb91
 50SHA1 (patch-src_event_modules_ngx__eventport__module.c) = c8e919f48d68bd5bffc4ad11d9c79dc6da3a0de2

cvs diff -r1.22 -r1.23 pkgsrc/www/nginx-devel/distinfo (expand / switch to unified diff)

--- pkgsrc/www/nginx-devel/distinfo 2016/10/04 10:12:42 1.22
+++ pkgsrc/www/nginx-devel/distinfo 2017/02/14 10:10:55 1.23
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1$NetBSD: distinfo,v 1.22 2016/10/04 10:12:42 fhajny Exp $ 1$NetBSD: distinfo,v 1.23 2017/02/14 10:10:55 fhajny Exp $
2 2
3SHA1 (array-var-nginx-module-0.04.tar.gz) = 1fd3bdd05c2d1d7667ed6f7baa612ddf7f630df3 3SHA1 (array-var-nginx-module-0.04.tar.gz) = 1fd3bdd05c2d1d7667ed6f7baa612ddf7f630df3
4RMD160 (array-var-nginx-module-0.04.tar.gz) = a751a2ce87dcfb88d072779097b4df9f42a415e4 4RMD160 (array-var-nginx-module-0.04.tar.gz) = a751a2ce87dcfb88d072779097b4df9f42a415e4
5SHA512 (array-var-nginx-module-0.04.tar.gz) = a45905338d2fdac002eaa43f7bff1fa48edcdcf9299de5c47725c2f6d86830f390fbdefc0ebe7492222e53de113439ea754ce63e20dc0245cf82e3247bb855f2 5SHA512 (array-var-nginx-module-0.04.tar.gz) = a45905338d2fdac002eaa43f7bff1fa48edcdcf9299de5c47725c2f6d86830f390fbdefc0ebe7492222e53de113439ea754ce63e20dc0245cf82e3247bb855f2
6Size (array-var-nginx-module-0.04.tar.gz) = 10777 bytes 6Size (array-var-nginx-module-0.04.tar.gz) = 10777 bytes
7SHA1 (echo-nginx-module-0.59.tar.gz) = 83cedd03405e86dde573d5c90a24ac6d7bf25ad5 7SHA1 (echo-nginx-module-0.59.tar.gz) = 83cedd03405e86dde573d5c90a24ac6d7bf25ad5
8RMD160 (echo-nginx-module-0.59.tar.gz) = 2caa40d531c0e19f0cdaa93c854e169f8f9375a2 8RMD160 (echo-nginx-module-0.59.tar.gz) = 2caa40d531c0e19f0cdaa93c854e169f8f9375a2
9SHA512 (echo-nginx-module-0.59.tar.gz) = 803c431da00160f62ee98e126d244fb97b2d9dca08137daabf55504f012598f8e2c689841c2e8bfced5f07ce24c46933c49b3feffc09ca0b5f07dc10e34546ee 9SHA512 (echo-nginx-module-0.59.tar.gz) = 803c431da00160f62ee98e126d244fb97b2d9dca08137daabf55504f012598f8e2c689841c2e8bfced5f07ce24c46933c49b3feffc09ca0b5f07dc10e34546ee
10Size (echo-nginx-module-0.59.tar.gz) = 52703 bytes 10Size (echo-nginx-module-0.59.tar.gz) = 52703 bytes
11SHA1 (encrypted-session-nginx-module-0.05.tar.gz) = 0d96ec039f98fae95ce315946bd4ad12128a426c 11SHA1 (encrypted-session-nginx-module-0.05.tar.gz) = 0d96ec039f98fae95ce315946bd4ad12128a426c
12RMD160 (encrypted-session-nginx-module-0.05.tar.gz) = 2e8f92d1841c9352cf9c2c775565a60cb840d2ff 12RMD160 (encrypted-session-nginx-module-0.05.tar.gz) = 2e8f92d1841c9352cf9c2c775565a60cb840d2ff
13SHA512 (encrypted-session-nginx-module-0.05.tar.gz) = eb11560945f614b110034a7fc461a23057cd8fdc50af7abaaec00fb4991c4dfec25ddfc56d3458de5bd601f0d9990dd235605432d46c5a1852be2f69317a5761 13SHA512 (encrypted-session-nginx-module-0.05.tar.gz) = eb11560945f614b110034a7fc461a23057cd8fdc50af7abaaec00fb4991c4dfec25ddfc56d3458de5bd601f0d9990dd235605432d46c5a1852be2f69317a5761
14Size (encrypted-session-nginx-module-0.05.tar.gz) = 10462 bytes 14Size (encrypted-session-nginx-module-0.05.tar.gz) = 10462 bytes
@@ -36,13 +36,14 @@ SHA1 (nginx_http_push_module-0.731.tar.g @@ -36,13 +36,14 @@ SHA1 (nginx_http_push_module-0.731.tar.g
36RMD160 (nginx_http_push_module-0.731.tar.gz) = d35d7138d3b4dd20076b1026c420f03c68177f99 36RMD160 (nginx_http_push_module-0.731.tar.gz) = d35d7138d3b4dd20076b1026c420f03c68177f99
37SHA512 (nginx_http_push_module-0.731.tar.gz) = b95e6e88236d920e18c927a5bdf7d84210ba34b234e7c20ba09d114337a4494535c94c7e84926e5479b23d4eba4e2f1db0a3e7d8b017c9907a4a824cd25098d8 37SHA512 (nginx_http_push_module-0.731.tar.gz) = b95e6e88236d920e18c927a5bdf7d84210ba34b234e7c20ba09d114337a4494535c94c7e84926e5479b23d4eba4e2f1db0a3e7d8b017c9907a4a824cd25098d8
38Size (nginx_http_push_module-0.731.tar.gz) = 50346 bytes 38Size (nginx_http_push_module-0.731.tar.gz) = 50346 bytes
39SHA1 (ngx_devel_kit-0.3.0.tar.gz) = b556d068db23037be30436af559795f45dd93c67 39SHA1 (ngx_devel_kit-0.3.0.tar.gz) = b556d068db23037be30436af559795f45dd93c67
40RMD160 (ngx_devel_kit-0.3.0.tar.gz) = beb2736eb06e8e26f60643623553789346f653da 40RMD160 (ngx_devel_kit-0.3.0.tar.gz) = beb2736eb06e8e26f60643623553789346f653da
41SHA512 (ngx_devel_kit-0.3.0.tar.gz) = 558764c9be913a4f61d0e277d07bf3c272e1ce086b3fadb85b693a7e92805cd9fca4da7a8d29c96e53fc0d23b331327d3b2561ff61f19d2330e7d5d35ac7d614 41SHA512 (ngx_devel_kit-0.3.0.tar.gz) = 558764c9be913a4f61d0e277d07bf3c272e1ce086b3fadb85b693a7e92805cd9fca4da7a8d29c96e53fc0d23b331327d3b2561ff61f19d2330e7d5d35ac7d614
42Size (ngx_devel_kit-0.3.0.tar.gz) = 66455 bytes 42Size (ngx_devel_kit-0.3.0.tar.gz) = 66455 bytes
43SHA1 (set-misc-nginx-module-0.30.tar.gz) = a56b4d9bd33df2117803c93e1edde8b8bcd6e507 43SHA1 (set-misc-nginx-module-0.30.tar.gz) = a56b4d9bd33df2117803c93e1edde8b8bcd6e507
44RMD160 (set-misc-nginx-module-0.30.tar.gz) = 6eec9e0828e4ef6339ecc5e53bf4580cf1e18fc3 44RMD160 (set-misc-nginx-module-0.30.tar.gz) = 6eec9e0828e4ef6339ecc5e53bf4580cf1e18fc3
45SHA512 (set-misc-nginx-module-0.30.tar.gz) = f081fc7e8e03f1a61b665d8798999f14d6516c317a039e35635f6368188f73a583c3320a5d41f000868b87e5c78e4796168e9d3d3a68325f3c642bf5b3458e2e 45SHA512 (set-misc-nginx-module-0.30.tar.gz) = f081fc7e8e03f1a61b665d8798999f14d6516c317a039e35635f6368188f73a583c3320a5d41f000868b87e5c78e4796168e9d3d3a68325f3c642bf5b3458e2e
46Size (set-misc-nginx-module-0.30.tar.gz) = 28584 bytes 46Size (set-misc-nginx-module-0.30.tar.gz) = 28584 bytes
47SHA1 (patch-auto_install) = 3b3a0f9f4c005b707664554fa57a58c9e3b7de60 47SHA1 (patch-auto_install) = 3b3a0f9f4c005b707664554fa57a58c9e3b7de60
48SHA1 (patch-conf_nginx.conf) = ee9fbc3838cc006f6e1cddddadf6603f4941d171 48SHA1 (patch-conf_nginx.conf) = ee9fbc3838cc006f6e1cddddadf6603f4941d171
 49SHA1 (patch-src_event_modules_ngx__eventport__module.c) = c8e919f48d68bd5bffc4ad11d9c79dc6da3a0de2

File Added: pkgsrc/www/nginx-devel/patches/Attic/patch-src_event_modules_ngx__eventport__module.c
$NetBSD: patch-src_event_modules_ngx__eventport__module.c,v 1.1 2017/02/14 10:10:55 fhajny Exp $

Fix a situation where Nginx can stop servicing events when port_getn() returns a timeout.

https://github.com/joyent/nginx/commit/bdd0c625236bc25799bd6f81dcf5d774928e8cb0

--- src/event/modules/ngx_eventport_module.c.orig	2017-01-24 14:02:19.000000000 +0000
+++ src/event/modules/ngx_eventport_module.c
@@ -468,6 +468,16 @@ ngx_eventport_process_events(ngx_cycle_t
         ngx_time_update();
     }
 
+    /*
+     * There's a long standing condition with event ports that port_getn() may
+     * return ETIME even when events are available. This would happen if we have
+     * specified a timeout to port_getn() without reaching the number of
+     * requested events.
+     */
+    if (n == -1 && err == ETIME && events > 0) {
+	    n = 0;
+    }
+
     if (n == -1) {
         if (err == ETIME) {
             if (timer != NGX_TIMER_INFINITE) {

File Added: pkgsrc/www/nginx/patches/Attic/patch-src_event_modules_ngx__eventport__module.c
$NetBSD: patch-src_event_modules_ngx__eventport__module.c,v 1.1 2017/02/14 10:10:55 fhajny Exp $

Fix a situation where Nginx can stop servicing events when port_getn() returns a timeout.

https://github.com/joyent/nginx/commit/bdd0c625236bc25799bd6f81dcf5d774928e8cb0

--- src/event/modules/ngx_eventport_module.c.orig	2017-01-24 14:02:19.000000000 +0000
+++ src/event/modules/ngx_eventport_module.c
@@ -468,6 +468,16 @@ ngx_eventport_process_events(ngx_cycle_t
         ngx_time_update();
     }
 
+    /*
+     * There's a long standing condition with event ports that port_getn() may
+     * return ETIME even when events are available. This would happen if we have
+     * specified a timeout to port_getn() without reaching the number of
+     * requested events.
+     */
+    if (n == -1 && err == ETIME && events > 0) {
+	    n = 0;
+    }
+
     if (n == -1) {
         if (err == ETIME) {
             if (timer != NGX_TIMER_INFINITE) {