mirror of
				https://github.com/openresty/openresty.git
				synced 2024-10-13 00:29:41 +00:00 
			
		
		
		
	checked in the patches for nginx 1.5.3; also applied the unix_socket_accept_over_read patch the nginx cores older than 1.5.3.
This commit is contained in:
		
							
								
								
									
										13
									
								
								patches/nginx-1.5.3-cve-2013-2070.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								patches/nginx-1.5.3-cve-2013-2070.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					--- src/http/modules/ngx_http_proxy_module.c
 | 
				
			||||||
 | 
					+++ src/http/modules/ngx_http_proxy_module.c
 | 
				
			||||||
 | 
					@@ -1865,6 +1865,10 @@ data:
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+    if (ctx->size < 0 || ctx->length < 0) {
 | 
				
			||||||
 | 
					+        goto invalid;
 | 
				
			||||||
 | 
					+    }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					     return rc;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 done:
 | 
				
			||||||
							
								
								
									
										1126
									
								
								patches/nginx-1.5.3-dtrace.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1126
									
								
								patches/nginx-1.5.3-dtrace.patch
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										11
									
								
								patches/nginx-1.5.3-gcc-maybe-uninitialized-warning.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								patches/nginx-1.5.3-gcc-maybe-uninitialized-warning.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					--- nginx-1.5.3/src/http/ngx_http_request.c	2013-05-06 03:26:50.000000000 -0700
 | 
				
			||||||
 | 
					+++ nginx-1.5.3-patched/src/http/ngx_http_request.c	2013-06-11 12:59:48.008321688 -0700
 | 
				
			||||||
 | 
					@@ -1951,7 +1951,7 @@
 | 
				
			||||||
 | 
					     ngx_int_t                  rc;
 | 
				
			||||||
 | 
					     ngx_http_connection_t     *hc;
 | 
				
			||||||
 | 
					     ngx_http_core_loc_conf_t  *clcf;
 | 
				
			||||||
 | 
					-    ngx_http_core_srv_conf_t  *cscf;
 | 
				
			||||||
 | 
					+    ngx_http_core_srv_conf_t  *cscf = NULL;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     hc = r->http_connection;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
							
								
								
									
										15
									
								
								patches/nginx-1.5.3-location_if_inherits_proxy.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								patches/nginx-1.5.3-location_if_inherits_proxy.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					--- nginx-1.5.3/src/http/modules/ngx_http_proxy_module.c	2012-04-23 18:40:01.000000000 +0800
 | 
				
			||||||
 | 
					+++ nginx-1.5.3-patched/src/http/modules/ngx_http_proxy_module.c	2012-06-24 12:48:57.289834450 +0800
 | 
				
			||||||
 | 
					@@ -3023,8 +3023,10 @@
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     if (conf->upstream.upstream || conf->proxy_lengths) {
 | 
				
			||||||
 | 
					         clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
 | 
				
			||||||
 | 
					-        if (clcf->handler == NULL && clcf->lmt_excpt) {
 | 
				
			||||||
 | 
					-            clcf->handler = ngx_http_proxy_handler;
 | 
				
			||||||
 | 
					+        if (clcf->handler == NULL) {
 | 
				
			||||||
 | 
					+            if (clcf->lmt_excpt) {
 | 
				
			||||||
 | 
					+                clcf->handler = ngx_http_proxy_handler;
 | 
				
			||||||
 | 
					+            }
 | 
				
			||||||
 | 
					             conf->location = prev->location;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
							
								
								
									
										115
									
								
								patches/nginx-1.5.3-log_escape_non_ascii.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								patches/nginx-1.5.3-log_escape_non_ascii.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,115 @@
 | 
				
			|||||||
 | 
					--- nginx-1.5.3/src/http/modules/ngx_http_log_module.c	2011-11-01 21:24:50.000000000 +0800
 | 
				
			||||||
 | 
					+++ nginx-1.5.3-patched/src/http/modules/ngx_http_log_module.c	2011-11-10 16:17:29.599039534 +0800
 | 
				
			||||||
 | 
					@@ -61,6 +61,8 @@
 | 
				
			||||||
 | 
					     time_t                      open_file_cache_valid;
 | 
				
			||||||
 | 
					     ngx_uint_t                  open_file_cache_min_uses;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+    ngx_flag_t                  escape_non_ascii;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					     ngx_uint_t                  off;        /* unsigned  off:1 */
 | 
				
			||||||
 | 
					 } ngx_http_log_loc_conf_t;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -104,7 +106,8 @@
 | 
				
			||||||
 | 
					     uintptr_t data);
 | 
				
			||||||
 | 
					 static u_char *ngx_http_log_variable(ngx_http_request_t *r, u_char *buf,
 | 
				
			||||||
 | 
					     ngx_http_log_op_t *op);
 | 
				
			||||||
 | 
					-static uintptr_t ngx_http_log_escape(u_char *dst, u_char *src, size_t size);
 | 
				
			||||||
 | 
					+static uintptr_t ngx_http_log_escape(ngx_http_log_loc_conf_t *lcf, u_char *dst,
 | 
				
			||||||
 | 
					+    u_char *src, size_t size);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 static void *ngx_http_log_create_main_conf(ngx_conf_t *cf);
 | 
				
			||||||
 | 
					@@ -146,6 +149,13 @@
 | 
				
			||||||
 | 
					       0,
 | 
				
			||||||
 | 
					       NULL },
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+    { ngx_string("log_escape_non_ascii"),
 | 
				
			||||||
 | 
					+      NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
 | 
				
			||||||
 | 
					+      ngx_conf_set_flag_slot,
 | 
				
			||||||
 | 
					+      NGX_HTTP_LOC_CONF_OFFSET,
 | 
				
			||||||
 | 
					+      offsetof(ngx_http_log_loc_conf_t, escape_non_ascii),
 | 
				
			||||||
 | 
					+      NULL },
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					       ngx_null_command
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -637,6 +647,7 @@
 | 
				
			||||||
 | 
					 ngx_http_log_variable_getlen(ngx_http_request_t *r, uintptr_t data)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     uintptr_t                   len;
 | 
				
			||||||
 | 
					+    ngx_http_log_loc_conf_t    *lcf;
 | 
				
			||||||
 | 
					     ngx_http_variable_value_t  *value;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     value = ngx_http_get_indexed_variable(r, data);
 | 
				
			||||||
 | 
					@@ -645,7 +656,9 @@
 | 
				
			||||||
 | 
					         return 1;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    len = ngx_http_log_escape(NULL, value->data, value->len);
 | 
				
			||||||
 | 
					+    lcf = ngx_http_get_module_loc_conf(r, ngx_http_log_module);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+    len = ngx_http_log_escape(lcf, NULL, value->data, value->len);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     value->escape = len ? 1 : 0;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -656,6 +669,7 @@
 | 
				
			||||||
 | 
					 static u_char *
 | 
				
			||||||
 | 
					 ngx_http_log_variable(ngx_http_request_t *r, u_char *buf, ngx_http_log_op_t *op)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					+    ngx_http_log_loc_conf_t    *lcf;
 | 
				
			||||||
 | 
					     ngx_http_variable_value_t  *value;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     value = ngx_http_get_indexed_variable(r, op->data);
 | 
				
			||||||
 | 
					@@ -669,16 +683,18 @@
 | 
				
			||||||
 | 
					         return ngx_cpymem(buf, value->data, value->len);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     } else {
 | 
				
			||||||
 | 
					-        return (u_char *) ngx_http_log_escape(buf, value->data, value->len);
 | 
				
			||||||
 | 
					+        lcf = ngx_http_get_module_loc_conf(r, ngx_http_log_module);
 | 
				
			||||||
 | 
					+        return (u_char *) ngx_http_log_escape(lcf, buf, value->data, value->len);
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 static uintptr_t
 | 
				
			||||||
 | 
					-ngx_http_log_escape(u_char *dst, u_char *src, size_t size)
 | 
				
			||||||
 | 
					+ngx_http_log_escape(ngx_http_log_loc_conf_t *lcf, u_char *dst, u_char *src,
 | 
				
			||||||
 | 
					+    size_t size)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					-    ngx_uint_t      n;
 | 
				
			||||||
 | 
					-    static u_char   hex[] = "0123456789ABCDEF";
 | 
				
			||||||
 | 
					+    ngx_uint_t                   n;
 | 
				
			||||||
 | 
					+    static u_char                hex[] = "0123456789ABCDEF";
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     static uint32_t   escape[] = {
 | 
				
			||||||
 | 
					         0xffffffff, /* 1111 1111 1111 1111  1111 1111 1111 1111 */
 | 
				
			||||||
 | 
					@@ -698,6 +714,12 @@
 | 
				
			||||||
 | 
					         0xffffffff, /* 1111 1111 1111 1111  1111 1111 1111 1111 */
 | 
				
			||||||
 | 
					     };
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+    if (lcf->escape_non_ascii) {
 | 
				
			||||||
 | 
					+        ngx_memset(&escape[4], 0xff, sizeof(uint32_t) * 4);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+    } else {
 | 
				
			||||||
 | 
					+        ngx_memzero(&escape[4], sizeof(uint32_t) * 4);
 | 
				
			||||||
 | 
					+    }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     if (dst == NULL) {
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -781,6 +803,7 @@
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     conf->open_file_cache = NGX_CONF_UNSET_PTR;
 | 
				
			||||||
 | 
					+    conf->escape_non_ascii = NGX_CONF_UNSET;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     return conf;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					@@ -796,6 +819,8 @@
 | 
				
			||||||
 | 
					     ngx_http_log_fmt_t        *fmt;
 | 
				
			||||||
 | 
					     ngx_http_log_main_conf_t  *lmcf;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+    ngx_conf_merge_value(conf->escape_non_ascii, prev->escape_non_ascii, 1);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					     if (conf->open_file_cache == NGX_CONF_UNSET_PTR) {
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					         conf->open_file_cache = prev->open_file_cache;
 | 
				
			||||||
							
								
								
									
										24
									
								
								patches/nginx-1.5.3-no_Werror.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								patches/nginx-1.5.3-no_Werror.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					diff -ur nginx-1.5.3/auto/cc/gcc nginx-1.5.3-patched/auto/cc/gcc
 | 
				
			||||||
 | 
					--- nginx-1.5.3/auto/cc/gcc	2011-06-27 19:53:00.205737804 +0800
 | 
				
			||||||
 | 
					+++ nginx-1.5.3-patched/auto/cc/gcc	2011-06-27 19:53:13.837741087 +0800
 | 
				
			||||||
 | 
					@@ -169,7 +169,7 @@
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 # stop on warning
 | 
				
			||||||
 | 
					-CFLAGS="$CFLAGS -Werror"
 | 
				
			||||||
 | 
					+#CFLAGS="$CFLAGS -Werror"
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 # debug
 | 
				
			||||||
 | 
					 CFLAGS="$CFLAGS -g"
 | 
				
			||||||
 | 
					diff -ur nginx-1.5.3/auto/cc/icc nginx-1.5.3-patched/auto/cc/icc
 | 
				
			||||||
 | 
					--- nginx-1.5.3/auto/cc/icc	2011-06-27 19:52:56.370157068 +0800
 | 
				
			||||||
 | 
					+++ nginx-1.5.3-patched/auto/cc/icc	2011-06-27 19:53:19.508916811 +0800
 | 
				
			||||||
 | 
					@@ -139,7 +139,7 @@
 | 
				
			||||||
 | 
					 esac
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 # stop on warning
 | 
				
			||||||
 | 
					-CFLAGS="$CFLAGS -Werror"
 | 
				
			||||||
 | 
					+#CFLAGS="$CFLAGS -Werror"
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 # debug
 | 
				
			||||||
 | 
					 CFLAGS="$CFLAGS -g"
 | 
				
			||||||
							
								
								
									
										90
									
								
								patches/nginx-1.5.3-no_error_pages.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								patches/nginx-1.5.3-no_error_pages.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,90 @@
 | 
				
			|||||||
 | 
					--- nginx-1.5.3/src/http/ngx_http_core_module.c	2010-12-14 18:38:42.000000000 +0800
 | 
				
			||||||
 | 
					+++ nginx-1.5.3-patched/src/http/ngx_http_core_module.c	2011-01-30 19:24:34.956354518 +0800
 | 
				
			||||||
 | 
					@@ -57,6 +57,8 @@
 | 
				
			||||||
 | 
					     void *conf);
 | 
				
			||||||
 | 
					 static char *ngx_http_core_error_page(ngx_conf_t *cf, ngx_command_t *cmd,
 | 
				
			||||||
 | 
					     void *conf);
 | 
				
			||||||
 | 
					+static char *ngx_http_core_no_error_pages(ngx_conf_t *cf, ngx_command_t *cmd,
 | 
				
			||||||
 | 
					+    void *conf);
 | 
				
			||||||
 | 
					 static char *ngx_http_core_try_files(ngx_conf_t *cf, ngx_command_t *cmd,
 | 
				
			||||||
 | 
					     void *conf);
 | 
				
			||||||
 | 
					 static char *ngx_http_core_open_file_cache(ngx_conf_t *cf, ngx_command_t *cmd,
 | 
				
			||||||
 | 
					@@ -614,6 +616,14 @@
 | 
				
			||||||
 | 
					       0,
 | 
				
			||||||
 | 
					       NULL },
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+    { ngx_string("no_error_pages"),
 | 
				
			||||||
 | 
					+      NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
 | 
				
			||||||
 | 
					+                        |NGX_CONF_NOARGS,
 | 
				
			||||||
 | 
					+      ngx_http_core_no_error_pages,
 | 
				
			||||||
 | 
					+      NGX_HTTP_LOC_CONF_OFFSET,
 | 
				
			||||||
 | 
					+      0,
 | 
				
			||||||
 | 
					+      NULL },
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					     { ngx_string("try_files"),
 | 
				
			||||||
 | 
					       NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_2MORE,
 | 
				
			||||||
 | 
					       ngx_http_core_try_files,
 | 
				
			||||||
 | 
					@@ -3052,7 +3062,6 @@
 | 
				
			||||||
 | 
					      *     clcf->types = NULL;
 | 
				
			||||||
 | 
					      *     clcf->default_type = { 0, NULL };
 | 
				
			||||||
 | 
					      *     clcf->error_log = NULL;
 | 
				
			||||||
 | 
					-     *     clcf->error_pages = NULL;
 | 
				
			||||||
 | 
					      *     clcf->try_files = NULL;
 | 
				
			||||||
 | 
					      *     clcf->client_body_path = NULL;
 | 
				
			||||||
 | 
					      *     clcf->regex = NULL;
 | 
				
			||||||
 | 
					@@ -3062,6 +3071,7 @@
 | 
				
			||||||
 | 
					      *     clcf->gzip_proxied = 0;
 | 
				
			||||||
 | 
					      */
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+    clcf->error_pages = NGX_CONF_UNSET_PTR;
 | 
				
			||||||
 | 
					     clcf->client_max_body_size = NGX_CONF_UNSET;
 | 
				
			||||||
 | 
					     clcf->client_body_buffer_size = NGX_CONF_UNSET_SIZE;
 | 
				
			||||||
 | 
					     clcf->client_body_timeout = NGX_CONF_UNSET_MSEC;
 | 
				
			||||||
 | 
					@@ -3250,9 +3260,7 @@
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    if (conf->error_pages == NULL && prev->error_pages) {
 | 
				
			||||||
 | 
					-        conf->error_pages = prev->error_pages;
 | 
				
			||||||
 | 
					-    }
 | 
				
			||||||
 | 
					+    ngx_conf_merge_ptr_value(conf->error_pages, prev->error_pages, NULL);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     ngx_conf_merge_str_value(conf->default_type,
 | 
				
			||||||
 | 
					                               prev->default_type, "text/plain");
 | 
				
			||||||
 | 
					@@ -3988,6 +3996,10 @@
 | 
				
			||||||
 | 
					     ngx_http_compile_complex_value_t   ccv;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     if (clcf->error_pages == NULL) {
 | 
				
			||||||
 | 
					+        return "conflicts with \"no_error_pages\"";
 | 
				
			||||||
 | 
					+    }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+    if (clcf->error_pages == NGX_CONF_UNSET_PTR) {
 | 
				
			||||||
 | 
					         clcf->error_pages = ngx_array_create(cf->pool, 4,
 | 
				
			||||||
 | 
					                                              sizeof(ngx_http_err_page_t));
 | 
				
			||||||
 | 
					         if (clcf->error_pages == NULL) {
 | 
				
			||||||
 | 
					@@ -4095,6 +4107,25 @@
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 static char *
 | 
				
			||||||
 | 
					+ngx_http_core_no_error_pages(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+    ngx_http_core_loc_conf_t *clcf = conf;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+    if (clcf->error_pages == NULL) {
 | 
				
			||||||
 | 
					+        return "is duplicate";
 | 
				
			||||||
 | 
					+    }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+    if (clcf->error_pages != NGX_CONF_UNSET_PTR) {
 | 
				
			||||||
 | 
					+        return "conflicts with \"error_page\"";
 | 
				
			||||||
 | 
					+    }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+    clcf->error_pages = NULL;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+    return NGX_CONF_OK;
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+static char *
 | 
				
			||||||
 | 
					 ngx_http_core_try_files(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     ngx_http_core_loc_conf_t *clcf = conf;
 | 
				
			||||||
							
								
								
									
										607
									
								
								patches/nginx-1.5.3-no_pool.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										607
									
								
								patches/nginx-1.5.3-no_pool.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,607 @@
 | 
				
			|||||||
 | 
					diff -upr nginx-1.5.3/src/core/nginx.h nginx-1.5.3-patched/src/core/nginx.h
 | 
				
			||||||
 | 
					--- nginx-1.5.3/src/core/nginx.h	2013-05-06 03:26:50.000000000 -0700
 | 
				
			||||||
 | 
					+++ nginx-1.5.3-patched/src/core/nginx.h	2013-06-10 16:12:23.691136795 -0700
 | 
				
			||||||
 | 
					@@ -10,7 +10,7 @@
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #define nginx_version      1005003
 | 
				
			||||||
 | 
					 #define NGINX_VERSION      "1.5.3"
 | 
				
			||||||
 | 
					-#define NGINX_VER          "ngx_openresty/" NGINX_VERSION ".unknown"
 | 
				
			||||||
 | 
					+#define NGINX_VER          "ngx_openresty/" NGINX_VERSION ".unknown (no pool)"
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #define NGINX_VAR          "NGINX"
 | 
				
			||||||
 | 
					Only in nginx-1.5.3-patched/src/core: nginx.h.orig
 | 
				
			||||||
 | 
					Only in nginx-1.5.3-patched/src/core: nginx.h.rej
 | 
				
			||||||
 | 
					diff -upr nginx-1.5.3/src/core/ngx_array.c nginx-1.5.3-patched/src/core/ngx_array.c
 | 
				
			||||||
 | 
					--- nginx-1.5.3/src/core/ngx_array.c	2013-05-06 03:26:50.000000000 -0700
 | 
				
			||||||
 | 
					+++ nginx-1.5.3-patched/src/core/ngx_array.c	2013-06-10 16:12:23.692136802 -0700
 | 
				
			||||||
 | 
					@@ -30,26 +30,30 @@ ngx_array_create(ngx_pool_t *p, ngx_uint
 | 
				
			||||||
 | 
					 void
 | 
				
			||||||
 | 
					 ngx_array_destroy(ngx_array_t *a)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					-    ngx_pool_t  *p;
 | 
				
			||||||
 | 
					+    ngx_pool_t          *p;
 | 
				
			||||||
 | 
					+    ngx_array_link_t    *link;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     p = a->pool;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    if ((u_char *) a->elts + a->size * a->nalloc == p->d.last) {
 | 
				
			||||||
 | 
					-        p->d.last -= a->size * a->nalloc;
 | 
				
			||||||
 | 
					+    if (a->elts) {
 | 
				
			||||||
 | 
					+        ngx_pfree(p, a->elts);
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    if ((u_char *) a + sizeof(ngx_array_t) == p->d.last) {
 | 
				
			||||||
 | 
					-        p->d.last = (u_char *) a;
 | 
				
			||||||
 | 
					+    for (link = a->old_elts; link; link = link->next) {
 | 
				
			||||||
 | 
					+        ngx_pfree(p, link->elts);
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+    ngx_pfree(p, a);
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 void *
 | 
				
			||||||
 | 
					 ngx_array_push(ngx_array_t *a)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					-    void        *elt, *new;
 | 
				
			||||||
 | 
					-    size_t       size;
 | 
				
			||||||
 | 
					-    ngx_pool_t  *p;
 | 
				
			||||||
 | 
					+    void                *elt, *new;
 | 
				
			||||||
 | 
					+    size_t               size;
 | 
				
			||||||
 | 
					+    ngx_pool_t          *p;
 | 
				
			||||||
 | 
					+    ngx_array_link_t    *link;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     if (a->nelts == a->nalloc) {
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -59,29 +63,27 @@ ngx_array_push(ngx_array_t *a)
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					         p = a->pool;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-        if ((u_char *) a->elts + size == p->d.last
 | 
				
			||||||
 | 
					-            && p->d.last + a->size <= p->d.end)
 | 
				
			||||||
 | 
					-        {
 | 
				
			||||||
 | 
					-            /*
 | 
				
			||||||
 | 
					-             * the array allocation is the last in the pool
 | 
				
			||||||
 | 
					-             * and there is space for new allocation
 | 
				
			||||||
 | 
					-             */
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-            p->d.last += a->size;
 | 
				
			||||||
 | 
					-            a->nalloc++;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-        } else {
 | 
				
			||||||
 | 
					-            /* allocate a new array */
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-            new = ngx_palloc(p, 2 * size);
 | 
				
			||||||
 | 
					-            if (new == NULL) {
 | 
				
			||||||
 | 
					-                return NULL;
 | 
				
			||||||
 | 
					-            }
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-            ngx_memcpy(new, a->elts, size);
 | 
				
			||||||
 | 
					-            a->elts = new;
 | 
				
			||||||
 | 
					-            a->nalloc *= 2;
 | 
				
			||||||
 | 
					+        /* allocate a new array */
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+        new = ngx_palloc(p, 2 * size);
 | 
				
			||||||
 | 
					+        if (new == NULL) {
 | 
				
			||||||
 | 
					+            return NULL;
 | 
				
			||||||
 | 
					+        }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+        ngx_memcpy(new, a->elts, size);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+        link = ngx_palloc(p, sizeof(ngx_array_link_t));
 | 
				
			||||||
 | 
					+        if (link == NULL) {
 | 
				
			||||||
 | 
					+            ngx_pfree(p, new);
 | 
				
			||||||
 | 
					+            return NULL;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+        link->next = a->old_elts;
 | 
				
			||||||
 | 
					+        link->elts = a->elts;
 | 
				
			||||||
 | 
					+        a->old_elts = link;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+        a->elts = new;
 | 
				
			||||||
 | 
					+        a->nalloc *= 2;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     elt = (u_char *) a->elts + a->size * a->nelts;
 | 
				
			||||||
 | 
					@@ -95,11 +97,10 @@ void *
 | 
				
			||||||
 | 
					 ngx_array_push_n(ngx_array_t *a, ngx_uint_t n)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     void        *elt, *new;
 | 
				
			||||||
 | 
					-    size_t       size;
 | 
				
			||||||
 | 
					     ngx_uint_t   nalloc;
 | 
				
			||||||
 | 
					     ngx_pool_t  *p;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    size = n * a->size;
 | 
				
			||||||
 | 
					+    ngx_array_link_t    *link;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     if (a->nelts + n > a->nalloc) {
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -107,31 +108,27 @@ ngx_array_push_n(ngx_array_t *a, ngx_uin
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					         p = a->pool;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-        if ((u_char *) a->elts + a->size * a->nalloc == p->d.last
 | 
				
			||||||
 | 
					-            && p->d.last + size <= p->d.end)
 | 
				
			||||||
 | 
					-        {
 | 
				
			||||||
 | 
					-            /*
 | 
				
			||||||
 | 
					-             * the array allocation is the last in the pool
 | 
				
			||||||
 | 
					-             * and there is space for new allocation
 | 
				
			||||||
 | 
					-             */
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-            p->d.last += size;
 | 
				
			||||||
 | 
					-            a->nalloc += n;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-        } else {
 | 
				
			||||||
 | 
					-            /* allocate a new array */
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-            nalloc = 2 * ((n >= a->nalloc) ? n : a->nalloc);
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-            new = ngx_palloc(p, nalloc * a->size);
 | 
				
			||||||
 | 
					-            if (new == NULL) {
 | 
				
			||||||
 | 
					-                return NULL;
 | 
				
			||||||
 | 
					-            }
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-            ngx_memcpy(new, a->elts, a->nelts * a->size);
 | 
				
			||||||
 | 
					-            a->elts = new;
 | 
				
			||||||
 | 
					-            a->nalloc = nalloc;
 | 
				
			||||||
 | 
					+        nalloc = 2 * ((n >= a->nalloc) ? n : a->nalloc);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+        new = ngx_palloc(p, nalloc * a->size);
 | 
				
			||||||
 | 
					+        if (new == NULL) {
 | 
				
			||||||
 | 
					+            return NULL;
 | 
				
			||||||
 | 
					+        }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+        ngx_memcpy(new, a->elts, a->nelts * a->size);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+        link = ngx_palloc(p, sizeof(ngx_array_link_t));
 | 
				
			||||||
 | 
					+        if (link == NULL) {
 | 
				
			||||||
 | 
					+            ngx_pfree(p, new);
 | 
				
			||||||
 | 
					+            return NULL;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+        link->next = a->old_elts;
 | 
				
			||||||
 | 
					+        link->elts = a->elts;
 | 
				
			||||||
 | 
					+        a->old_elts = link;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+        a->elts = new;
 | 
				
			||||||
 | 
					+        a->nalloc = nalloc;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     elt = (u_char *) a->elts + a->size * a->nelts;
 | 
				
			||||||
 | 
					Only in nginx-1.5.3-patched/src/core: ngx_array.c.orig
 | 
				
			||||||
 | 
					Only in nginx-1.5.3-patched/src/core: ngx_array.c.rej
 | 
				
			||||||
 | 
					diff -upr nginx-1.5.3/src/core/ngx_array.h nginx-1.5.3-patched/src/core/ngx_array.h
 | 
				
			||||||
 | 
					--- nginx-1.5.3/src/core/ngx_array.h	2013-05-06 03:26:50.000000000 -0700
 | 
				
			||||||
 | 
					+++ nginx-1.5.3-patched/src/core/ngx_array.h	2013-06-10 16:15:08.314275482 -0700
 | 
				
			||||||
 | 
					@@ -13,12 +13,23 @@
 | 
				
			||||||
 | 
					 #include <ngx_core.h>
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+typedef struct ngx_array_link_s ngx_array_link_t;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+struct ngx_array_link_s {
 | 
				
			||||||
 | 
					+    void                    *elts;
 | 
				
			||||||
 | 
					+    ngx_array_link_t        *next;
 | 
				
			||||||
 | 
					+};
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 typedef struct {
 | 
				
			||||||
 | 
					     void        *elts;
 | 
				
			||||||
 | 
					     ngx_uint_t   nelts;
 | 
				
			||||||
 | 
					     size_t       size;
 | 
				
			||||||
 | 
					     ngx_uint_t   nalloc;
 | 
				
			||||||
 | 
					     ngx_pool_t  *pool;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+    ngx_array_link_t *old_elts;
 | 
				
			||||||
 | 
					 } ngx_array_t;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -40,6 +51,7 @@ ngx_array_init(ngx_array_t *array, ngx_p
 | 
				
			||||||
 | 
					     array->size = size;
 | 
				
			||||||
 | 
					     array->nalloc = n;
 | 
				
			||||||
 | 
					     array->pool = pool;
 | 
				
			||||||
 | 
					+    array->old_elts = NULL;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     array->elts = ngx_palloc(pool, n * size);
 | 
				
			||||||
 | 
					     if (array->elts == NULL) {
 | 
				
			||||||
 | 
					Only in nginx-1.5.3-patched/src/core: ngx_array.h.orig
 | 
				
			||||||
 | 
					Only in nginx-1.5.3-patched/src/core: ngx_array.h.rej
 | 
				
			||||||
 | 
					diff -upr nginx-1.5.3/src/core/ngx_palloc.c nginx-1.5.3-patched/src/core/ngx_palloc.c
 | 
				
			||||||
 | 
					--- nginx-1.5.3/src/core/ngx_palloc.c	2013-05-06 03:26:50.000000000 -0700
 | 
				
			||||||
 | 
					+++ nginx-1.5.3-patched/src/core/ngx_palloc.c	2013-06-10 16:12:23.718136984 -0700
 | 
				
			||||||
 | 
					@@ -9,32 +9,23 @@
 | 
				
			||||||
 | 
					 #include <ngx_core.h>
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-static void *ngx_palloc_block(ngx_pool_t *pool, size_t size);
 | 
				
			||||||
 | 
					-static void *ngx_palloc_large(ngx_pool_t *pool, size_t size);
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					 ngx_pool_t *
 | 
				
			||||||
 | 
					 ngx_create_pool(size_t size, ngx_log_t *log)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					-    ngx_pool_t  *p;
 | 
				
			||||||
 | 
					+    ngx_pool_t        *p;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    p = ngx_memalign(NGX_POOL_ALIGNMENT, size, log);
 | 
				
			||||||
 | 
					+    size = sizeof(ngx_pool_t);
 | 
				
			||||||
 | 
					+    p = ngx_alloc(size, log);
 | 
				
			||||||
 | 
					     if (p == NULL) {
 | 
				
			||||||
 | 
					         return NULL;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    p->d.last = (u_char *) p + sizeof(ngx_pool_t);
 | 
				
			||||||
 | 
					-    p->d.end = (u_char *) p + size;
 | 
				
			||||||
 | 
					-    p->d.next = NULL;
 | 
				
			||||||
 | 
					-    p->d.failed = 0;
 | 
				
			||||||
 | 
					+    ngx_memzero(p, size);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     size = size - sizeof(ngx_pool_t);
 | 
				
			||||||
 | 
					     p->max = (size < NGX_MAX_ALLOC_FROM_POOL) ? size : NGX_MAX_ALLOC_FROM_POOL;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     p->current = p;
 | 
				
			||||||
 | 
					-    p->chain = NULL;
 | 
				
			||||||
 | 
					-    p->large = NULL;
 | 
				
			||||||
 | 
					-    p->cleanup = NULL;
 | 
				
			||||||
 | 
					     p->log = log;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     return p;
 | 
				
			||||||
 | 
					@@ -44,8 +35,7 @@ ngx_create_pool(size_t size, ngx_log_t *
 | 
				
			||||||
 | 
					 void
 | 
				
			||||||
 | 
					 ngx_destroy_pool(ngx_pool_t *pool)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					-    ngx_pool_t          *p, *n;
 | 
				
			||||||
 | 
					-    ngx_pool_large_t    *l;
 | 
				
			||||||
 | 
					+    ngx_pool_data_t     *d, *n;
 | 
				
			||||||
 | 
					     ngx_pool_cleanup_t  *c;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     for (c = pool->cleanup; c; c = c->next) {
 | 
				
			||||||
 | 
					@@ -56,13 +46,9 @@ ngx_destroy_pool(ngx_pool_t *pool)
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    for (l = pool->large; l; l = l->next) {
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-        ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, pool->log, 0, "free: %p", l->alloc);
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-        if (l->alloc) {
 | 
				
			||||||
 | 
					-            ngx_free(l->alloc);
 | 
				
			||||||
 | 
					-        }
 | 
				
			||||||
 | 
					+    if (pool->d == NULL) {
 | 
				
			||||||
 | 
					+        ngx_free(pool);
 | 
				
			||||||
 | 
					+        return;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #if (NGX_DEBUG)
 | 
				
			||||||
 | 
					@@ -72,9 +58,9 @@ ngx_destroy_pool(ngx_pool_t *pool)
 | 
				
			||||||
 | 
					      * so we cannot use this log while free()ing the pool
 | 
				
			||||||
 | 
					      */
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    for (p = pool, n = pool->d.next; /* void */; p = n, n = n->d.next) {
 | 
				
			||||||
 | 
					+    for (d = pool->d, n = d->next; ; d = n, n = n->next) {
 | 
				
			||||||
 | 
					         ngx_log_debug2(NGX_LOG_DEBUG_ALLOC, pool->log, 0,
 | 
				
			||||||
 | 
					-                       "free: %p, unused: %uz", p, p->d.end - p->d.last);
 | 
				
			||||||
 | 
					+                       "free: %p, unused: %d", d, 0);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					         if (n == NULL) {
 | 
				
			||||||
 | 
					             break;
 | 
				
			||||||
 | 
					@@ -83,172 +69,82 @@ ngx_destroy_pool(ngx_pool_t *pool)
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    for (p = pool, n = pool->d.next; /* void */; p = n, n = n->d.next) {
 | 
				
			||||||
 | 
					-        ngx_free(p);
 | 
				
			||||||
 | 
					+    for (d = pool->d, n = d->next; ; d = n, n = n->next) {
 | 
				
			||||||
 | 
					+        ngx_free(d->alloc);
 | 
				
			||||||
 | 
					+        ngx_free(d);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					         if (n == NULL) {
 | 
				
			||||||
 | 
					             break;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					-}
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+    pool->d = NULL;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-void
 | 
				
			||||||
 | 
					-ngx_reset_pool(ngx_pool_t *pool)
 | 
				
			||||||
 | 
					-{
 | 
				
			||||||
 | 
					-    ngx_pool_t        *p;
 | 
				
			||||||
 | 
					-    ngx_pool_large_t  *l;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-    for (l = pool->large; l; l = l->next) {
 | 
				
			||||||
 | 
					-        if (l->alloc) {
 | 
				
			||||||
 | 
					-            ngx_free(l->alloc);
 | 
				
			||||||
 | 
					-        }
 | 
				
			||||||
 | 
					-    }
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-    pool->large = NULL;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-    for (p = pool; p; p = p->d.next) {
 | 
				
			||||||
 | 
					-        p->d.last = (u_char *) p + sizeof(ngx_pool_t);
 | 
				
			||||||
 | 
					-    }
 | 
				
			||||||
 | 
					+    ngx_free(pool);
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-void *
 | 
				
			||||||
 | 
					-ngx_palloc(ngx_pool_t *pool, size_t size)
 | 
				
			||||||
 | 
					+void
 | 
				
			||||||
 | 
					+ngx_reset_pool(ngx_pool_t *pool)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					-    u_char      *m;
 | 
				
			||||||
 | 
					-    ngx_pool_t  *p;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-    if (size <= pool->max) {
 | 
				
			||||||
 | 
					+    ngx_pool_data_t     *d, *n;
 | 
				
			||||||
 | 
					+    ngx_pool_data_t     *saved = NULL;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-        p = pool->current;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-        do {
 | 
				
			||||||
 | 
					-            m = ngx_align_ptr(p->d.last, NGX_ALIGNMENT);
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-            if ((size_t) (p->d.end - m) >= size) {
 | 
				
			||||||
 | 
					-                p->d.last = m + size;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-                return m;
 | 
				
			||||||
 | 
					+    if (pool->d) {
 | 
				
			||||||
 | 
					+        for (d = pool->d, n = d->next; ; d = n, n = n->next) {
 | 
				
			||||||
 | 
					+            if (d->alloc == pool->log) {
 | 
				
			||||||
 | 
					+                saved = d;
 | 
				
			||||||
 | 
					+                continue;
 | 
				
			||||||
 | 
					             }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-            p = p->d.next;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-        } while (p);
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-        return ngx_palloc_block(pool, size);
 | 
				
			||||||
 | 
					-    }
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-    return ngx_palloc_large(pool, size);
 | 
				
			||||||
 | 
					-}
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-void *
 | 
				
			||||||
 | 
					-ngx_pnalloc(ngx_pool_t *pool, size_t size)
 | 
				
			||||||
 | 
					-{
 | 
				
			||||||
 | 
					-    u_char      *m;
 | 
				
			||||||
 | 
					-    ngx_pool_t  *p;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-    if (size <= pool->max) {
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-        p = pool->current;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-        do {
 | 
				
			||||||
 | 
					-            m = p->d.last;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-            if ((size_t) (p->d.end - m) >= size) {
 | 
				
			||||||
 | 
					-                p->d.last = m + size;
 | 
				
			||||||
 | 
					+            ngx_free(d->alloc);
 | 
				
			||||||
 | 
					+            ngx_free(d);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-                return m;
 | 
				
			||||||
 | 
					+            if (n == NULL) {
 | 
				
			||||||
 | 
					+                break;
 | 
				
			||||||
 | 
					             }
 | 
				
			||||||
 | 
					+        }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-            p = p->d.next;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-        } while (p);
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-        return ngx_palloc_block(pool, size);
 | 
				
			||||||
 | 
					+        pool->d = saved;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-    return ngx_palloc_large(pool, size);
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-static void *
 | 
				
			||||||
 | 
					-ngx_palloc_block(ngx_pool_t *pool, size_t size)
 | 
				
			||||||
 | 
					+void *
 | 
				
			||||||
 | 
					+ngx_malloc(ngx_pool_t *pool, size_t size)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					-    u_char      *m;
 | 
				
			||||||
 | 
					-    size_t       psize;
 | 
				
			||||||
 | 
					-    ngx_pool_t  *p, *new, *current;
 | 
				
			||||||
 | 
					+    ngx_pool_data_t     *d;
 | 
				
			||||||
 | 
					+    void                *p;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    psize = (size_t) (pool->d.end - (u_char *) pool);
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-    m = ngx_memalign(NGX_POOL_ALIGNMENT, psize, pool->log);
 | 
				
			||||||
 | 
					-    if (m == NULL) {
 | 
				
			||||||
 | 
					+    p = ngx_alloc(size, pool->log);
 | 
				
			||||||
 | 
					+    if (p == NULL) {
 | 
				
			||||||
 | 
					         return NULL;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    new = (ngx_pool_t *) m;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-    new->d.end = m + psize;
 | 
				
			||||||
 | 
					-    new->d.next = NULL;
 | 
				
			||||||
 | 
					-    new->d.failed = 0;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-    m += sizeof(ngx_pool_data_t);
 | 
				
			||||||
 | 
					-    m = ngx_align_ptr(m, NGX_ALIGNMENT);
 | 
				
			||||||
 | 
					-    new->d.last = m + size;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-    current = pool->current;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-    for (p = current; p->d.next; p = p->d.next) {
 | 
				
			||||||
 | 
					-        if (p->d.failed++ > 4) {
 | 
				
			||||||
 | 
					-            current = p->d.next;
 | 
				
			||||||
 | 
					-        }
 | 
				
			||||||
 | 
					+    d = ngx_alloc(sizeof(ngx_pool_data_t), pool->log);
 | 
				
			||||||
 | 
					+    if (d == NULL){
 | 
				
			||||||
 | 
					+        ngx_free(p);
 | 
				
			||||||
 | 
					+        return NULL;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    p->d.next = new;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-    pool->current = current ? current : new;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-    return m;
 | 
				
			||||||
 | 
					+    d->alloc = p;
 | 
				
			||||||
 | 
					+    d->next = pool->d;
 | 
				
			||||||
 | 
					+    pool->d = d;
 | 
				
			||||||
 | 
					+    return p;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-static void *
 | 
				
			||||||
 | 
					-ngx_palloc_large(ngx_pool_t *pool, size_t size)
 | 
				
			||||||
 | 
					+void *
 | 
				
			||||||
 | 
					+ngx_palloc(ngx_pool_t *pool, size_t size)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					-    void              *p;
 | 
				
			||||||
 | 
					-    ngx_uint_t         n;
 | 
				
			||||||
 | 
					-    ngx_pool_large_t  *large;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-    p = ngx_alloc(size, pool->log);
 | 
				
			||||||
 | 
					-    if (p == NULL) {
 | 
				
			||||||
 | 
					-        return NULL;
 | 
				
			||||||
 | 
					-    }
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-    n = 0;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-    for (large = pool->large; large; large = large->next) {
 | 
				
			||||||
 | 
					-        if (large->alloc == NULL) {
 | 
				
			||||||
 | 
					-            large->alloc = p;
 | 
				
			||||||
 | 
					-            return p;
 | 
				
			||||||
 | 
					-        }
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-        if (n++ > 3) {
 | 
				
			||||||
 | 
					-            break;
 | 
				
			||||||
 | 
					-        }
 | 
				
			||||||
 | 
					-    }
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-    large = ngx_palloc(pool, sizeof(ngx_pool_large_t));
 | 
				
			||||||
 | 
					-    if (large == NULL) {
 | 
				
			||||||
 | 
					-        ngx_free(p);
 | 
				
			||||||
 | 
					-        return NULL;
 | 
				
			||||||
 | 
					-    }
 | 
				
			||||||
 | 
					+    return ngx_malloc(pool, size);
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    large->alloc = p;
 | 
				
			||||||
 | 
					-    large->next = pool->large;
 | 
				
			||||||
 | 
					-    pool->large = large;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    return p;
 | 
				
			||||||
 | 
					+void *
 | 
				
			||||||
 | 
					+ngx_pnalloc(ngx_pool_t *pool, size_t size)
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+    return ngx_malloc(pool, size);
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -256,38 +152,48 @@ void *
 | 
				
			||||||
 | 
					 ngx_pmemalign(ngx_pool_t *pool, size_t size, size_t alignment)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					     void              *p;
 | 
				
			||||||
 | 
					-    ngx_pool_large_t  *large;
 | 
				
			||||||
 | 
					+    ngx_pool_data_t   *d;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     p = ngx_memalign(alignment, size, pool->log);
 | 
				
			||||||
 | 
					     if (p == NULL) {
 | 
				
			||||||
 | 
					         return NULL;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    large = ngx_palloc(pool, sizeof(ngx_pool_large_t));
 | 
				
			||||||
 | 
					-    if (large == NULL) {
 | 
				
			||||||
 | 
					+    d = ngx_alloc(sizeof(ngx_pool_data_t), pool->log);
 | 
				
			||||||
 | 
					+    if (d == NULL){
 | 
				
			||||||
 | 
					         ngx_free(p);
 | 
				
			||||||
 | 
					         return NULL;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    large->alloc = p;
 | 
				
			||||||
 | 
					-    large->next = pool->large;
 | 
				
			||||||
 | 
					-    pool->large = large;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					+    d->alloc = p;
 | 
				
			||||||
 | 
					+    d->next = pool->d;
 | 
				
			||||||
 | 
					+    pool->d = d;
 | 
				
			||||||
 | 
					     return p;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 ngx_int_t
 | 
				
			||||||
 | 
					-ngx_pfree(ngx_pool_t *pool, void *p)
 | 
				
			||||||
 | 
					+ngx_pfree(ngx_pool_t *pool, void *data)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					-    ngx_pool_large_t  *l;
 | 
				
			||||||
 | 
					+    ngx_pool_data_t     *p, *d;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    for (l = pool->large; l; l = l->next) {
 | 
				
			||||||
 | 
					-        if (p == l->alloc) {
 | 
				
			||||||
 | 
					-            ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, pool->log, 0,
 | 
				
			||||||
 | 
					-                           "free: %p", l->alloc);
 | 
				
			||||||
 | 
					-            ngx_free(l->alloc);
 | 
				
			||||||
 | 
					-            l->alloc = NULL;
 | 
				
			||||||
 | 
					+    p = NULL;
 | 
				
			||||||
 | 
					+    for (d = pool->d; d; p = d, d = d->next) {
 | 
				
			||||||
 | 
					+        if (data == d->alloc) {
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+            ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, pool->log, 0, "free: %p", d->alloc);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+            ngx_free(d->alloc);
 | 
				
			||||||
 | 
					+            d->alloc = NULL;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+            if (p) {
 | 
				
			||||||
 | 
					+                p->next = d->next;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+            } else {
 | 
				
			||||||
 | 
					+                pool->d = d->next;
 | 
				
			||||||
 | 
					+            }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+            ngx_free(d);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					             return NGX_OK;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					diff -upr nginx-1.5.3/src/core/ngx_palloc.h nginx-1.5.3-patched/src/core/ngx_palloc.h
 | 
				
			||||||
 | 
					--- nginx-1.5.3/src/core/ngx_palloc.h	2013-05-06 03:26:50.000000000 -0700
 | 
				
			||||||
 | 
					+++ nginx-1.5.3-patched/src/core/ngx_palloc.h	2013-06-10 16:12:23.720136999 -0700
 | 
				
			||||||
 | 
					@@ -38,28 +38,21 @@ struct ngx_pool_cleanup_s {
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-typedef struct ngx_pool_large_s  ngx_pool_large_t;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-struct ngx_pool_large_s {
 | 
				
			||||||
 | 
					-    ngx_pool_large_t     *next;
 | 
				
			||||||
 | 
					-    void                 *alloc;
 | 
				
			||||||
 | 
					-};
 | 
				
			||||||
 | 
					+typedef struct ngx_pool_data_s   ngx_pool_large_t;
 | 
				
			||||||
 | 
					+typedef struct ngx_pool_data_s   ngx_pool_data_t;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-typedef struct {
 | 
				
			||||||
 | 
					-    u_char               *last;
 | 
				
			||||||
 | 
					-    u_char               *end;
 | 
				
			||||||
 | 
					-    ngx_pool_t           *next;
 | 
				
			||||||
 | 
					-    ngx_uint_t            failed;
 | 
				
			||||||
 | 
					-} ngx_pool_data_t;
 | 
				
			||||||
 | 
					+struct ngx_pool_data_s {
 | 
				
			||||||
 | 
					+    ngx_pool_data_t        *next;
 | 
				
			||||||
 | 
					+    void                   *alloc;
 | 
				
			||||||
 | 
					+};
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 struct ngx_pool_s {
 | 
				
			||||||
 | 
					-    ngx_pool_data_t       d;
 | 
				
			||||||
 | 
					+    ngx_pool_data_t      *d;
 | 
				
			||||||
 | 
					     size_t                max;
 | 
				
			||||||
 | 
					     ngx_pool_t           *current;
 | 
				
			||||||
 | 
					     ngx_chain_t          *chain;
 | 
				
			||||||
 | 
					-    ngx_pool_large_t     *large;
 | 
				
			||||||
 | 
					     ngx_pool_cleanup_t   *cleanup;
 | 
				
			||||||
 | 
					     ngx_log_t            *log;
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
							
								
								
									
										26
									
								
								patches/nginx-1.5.3-server_header.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								patches/nginx-1.5.3-server_header.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					diff -ur lz-nginx-1.5.3/nginx-1.5.3/src/core/nginx.h lz-nginx-1.5.3-patched/nginx-1.5.3/src/core/nginx.h
 | 
				
			||||||
 | 
					--- lz-nginx-1.5.3/nginx-1.5.3/src/core/nginx.h	2010-02-12 17:31:01.000000000 +0800
 | 
				
			||||||
 | 
					+++ lz-nginx-1.5.3-patched/nginx-1.5.3/src/core/nginx.h	2010-03-30 10:52:13.240702627 +0800
 | 
				
			||||||
 | 
					@@ -10,7 +10,7 @@
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #define nginx_version         1005003
 | 
				
			||||||
 | 
					 #define NGINX_VERSION      "1.5.3"
 | 
				
			||||||
 | 
					-#define NGINX_VER          "nginx/" NGINX_VERSION
 | 
				
			||||||
 | 
					+#define NGINX_VER          "ngx_openresty/" NGINX_VERSION ".unknown"
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #define NGINX_VAR          "NGINX"
 | 
				
			||||||
 | 
					 #define NGX_OLDPID_EXT     ".oldbin"
 | 
				
			||||||
 | 
					Only in lz-nginx-1.5.3-patched/nginx-1.5.3/src/core: nginx.h.orig
 | 
				
			||||||
 | 
					Only in lz-nginx-1.5.3-patched/nginx-1.5.3/src/core: nginx.h.rej
 | 
				
			||||||
 | 
					diff -ur lz-nginx-1.5.3/nginx-1.5.3/src/http/ngx_http_header_filter_module.c lz-nginx-1.5.3-patched/nginx-1.5.3/src/http/ngx_http_header_filter_module.c
 | 
				
			||||||
 | 
					--- lz-nginx-1.5.3/nginx-1.5.3/src/http/ngx_http_header_filter_module.c	2010-03-03 23:14:04.000000000 +0800
 | 
				
			||||||
 | 
					+++ lz-nginx-1.5.3-patched/nginx-1.5.3/src/http/ngx_http_header_filter_module.c	2010-03-30 10:52:53.670909405 +0800
 | 
				
			||||||
 | 
					@@ -45,7 +45,7 @@
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-static char ngx_http_server_string[] = "Server: nginx" CRLF;
 | 
				
			||||||
 | 
					+static char ngx_http_server_string[] = "Server: ngx_openresty" CRLF;
 | 
				
			||||||
 | 
					 static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
							
								
								
									
										11
									
								
								patches/nginx-1.5.3-slab_alloc_no_memory_as_info.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								patches/nginx-1.5.3-slab_alloc_no_memory_as_info.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					--- nginx-1.5.3/src/core/ngx_slab.c	2012-09-24 11:34:04.000000000 -0700
 | 
				
			||||||
 | 
					+++ nginx-1.5.3-patched/src/core/ngx_slab.c	2012-12-05 20:47:07.296694952 -0800
 | 
				
			||||||
 | 
					@@ -657,7 +657,7 @@ ngx_slab_alloc_pages(ngx_slab_pool_t *po
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    ngx_slab_error(pool, NGX_LOG_CRIT, "ngx_slab_alloc() failed: no memory");
 | 
				
			||||||
 | 
					+    ngx_slab_error(pool, NGX_LOG_INFO, "ngx_slab_alloc() failed: no memory");
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     return NULL;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
							
								
								
									
										41
									
								
								patches/nginx-1.5.3-unix_socket_accept_over_read.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								patches/nginx-1.5.3-unix_socket_accept_over_read.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					--- nginx-1.5.3/src/event/ngx_event_accept.c	2013-05-06 03:26:50.000000000 -0700
 | 
				
			||||||
 | 
					+++ nginx-1.5.3-patched/src/event/ngx_event_accept.c	2013-07-10 13:05:02.001249099 -0700
 | 
				
			||||||
 | 
					@@ -269,17 +269,28 @@ ngx_event_accept(ngx_event_t *ev)
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					         if (ls->addr_ntop) {
 | 
				
			||||||
 | 
					-            c->addr_text.data = ngx_pnalloc(c->pool, ls->addr_text_max_len);
 | 
				
			||||||
 | 
					-            if (c->addr_text.data == NULL) {
 | 
				
			||||||
 | 
					-                ngx_close_accepted_connection(c);
 | 
				
			||||||
 | 
					-                return;
 | 
				
			||||||
 | 
					-            }
 | 
				
			||||||
 | 
					+            if (socklen > sizeof(c->sockaddr->sa_family)) {
 | 
				
			||||||
 | 
					+                c->addr_text.data = ngx_pnalloc(c->pool, ls->addr_text_max_len);
 | 
				
			||||||
 | 
					+                if (c->addr_text.data == NULL) {
 | 
				
			||||||
 | 
					+                    ngx_close_accepted_connection(c);
 | 
				
			||||||
 | 
					+                    return;
 | 
				
			||||||
 | 
					+                }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+                c->addr_text.len = ngx_sock_ntop(c->sockaddr, c->addr_text.data,
 | 
				
			||||||
 | 
					+                                                 ls->addr_text_max_len, 0);
 | 
				
			||||||
 | 
					+                if (c->addr_text.len == 0) {
 | 
				
			||||||
 | 
					+                    ngx_close_accepted_connection(c);
 | 
				
			||||||
 | 
					+                    return;
 | 
				
			||||||
 | 
					+                }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+            } else {
 | 
				
			||||||
 | 
					+                /*
 | 
				
			||||||
 | 
					+                 * Linux accept/accept4 syscalls, for example, do not return
 | 
				
			||||||
 | 
					+                 * address data upon unix domain sockets
 | 
				
			||||||
 | 
					+                 */
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-            c->addr_text.len = ngx_sock_ntop(c->sockaddr, c->addr_text.data,
 | 
				
			||||||
 | 
					-                                             ls->addr_text_max_len, 0);
 | 
				
			||||||
 | 
					-            if (c->addr_text.len == 0) {
 | 
				
			||||||
 | 
					-                ngx_close_accepted_connection(c);
 | 
				
			||||||
 | 
					-                return;
 | 
				
			||||||
 | 
					+                c->addr_text.data = NULL;
 | 
				
			||||||
 | 
					+                c->addr_text.len = 0;
 | 
				
			||||||
 | 
					             }
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
							
								
								
									
										40
									
								
								patches/nginx-1.5.3-upstream_pipelining.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								patches/nginx-1.5.3-upstream_pipelining.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					diff -rudp nginx-1.5.3/src/http/ngx_http_upstream.c nginx-1.5.3-patched/src/http/ngx_http_upstream.c
 | 
				
			||||||
 | 
					--- nginx-1.5.3/src/http/ngx_http_upstream.c	2012-08-06 10:34:08.000000000 -0700
 | 
				
			||||||
 | 
					+++ nginx-1.5.3-patched/src/http/ngx_http_upstream.c	2012-12-05 14:46:41.741173058 -0800
 | 
				
			||||||
 | 
					@@ -1216,6 +1216,7 @@ ngx_http_upstream_connect(ngx_http_reque
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     u->request_sent = 0;
 | 
				
			||||||
 | 
					+    u->request_all_sent = 0;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     if (rc == NGX_AGAIN) {
 | 
				
			||||||
 | 
					         ngx_add_timer(c->write, u->conf->connect_timeout);
 | 
				
			||||||
 | 
					@@ -1418,6 +1419,8 @@ ngx_http_upstream_send_request(ngx_http_
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     /* rc == NGX_OK */
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+    u->request_all_sent = 1;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					     if (c->tcp_nopush == NGX_TCP_NOPUSH_SET) {
 | 
				
			||||||
 | 
					         if (ngx_tcp_push(c->fd) == NGX_ERROR) {
 | 
				
			||||||
 | 
					             ngx_log_error(NGX_LOG_CRIT, c->log, ngx_socket_errno,
 | 
				
			||||||
 | 
					@@ -1484,7 +1487,7 @@ ngx_http_upstream_send_request_handler(n
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-    if (u->header_sent) {
 | 
				
			||||||
 | 
					+    if (u->request_all_sent) {
 | 
				
			||||||
 | 
					         u->write_event_handler = ngx_http_upstream_dummy_handler;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					         (void) ngx_handle_write_event(c->write, 0);
 | 
				
			||||||
 | 
					diff -rudp nginx-1.5.3/src/http/ngx_http_upstream.h nginx-1.5.3-patched/src/http/ngx_http_upstream.h
 | 
				
			||||||
 | 
					--- nginx-1.5.3/src/http/ngx_http_upstream.h	2012-02-13 03:01:58.000000000 -0800
 | 
				
			||||||
 | 
					+++ nginx-1.5.3-patched/src/http/ngx_http_upstream.h	2012-12-05 14:41:09.763514741 -0800
 | 
				
			||||||
 | 
					@@ -324,6 +324,7 @@ struct ngx_http_upstream_s {
 | 
				
			||||||
 | 
					     unsigned                         keepalive:1;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					     unsigned                         request_sent:1;
 | 
				
			||||||
 | 
					+    unsigned                         request_all_sent:1;
 | 
				
			||||||
 | 
					     unsigned                         header_sent:1;
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
@ -109,13 +109,19 @@ echo "$info_txt applying the location_if_inherits_proxy patch for nginx"
 | 
				
			|||||||
patch -p1 < $root/patches/nginx-$main_ver-location_if_inherits_proxy.patch || exit 1
 | 
					patch -p1 < $root/patches/nginx-$main_ver-location_if_inherits_proxy.patch || exit 1
 | 
				
			||||||
echo
 | 
					echo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo "$info_txt applying the upstream_truncation patch for nginx"
 | 
					answer=`$root/util/ver-ge "$main_ver" 1.5.3`
 | 
				
			||||||
patch -p1 < $root/patches/nginx-$main_ver-upstream_truncation.patch || exit 1
 | 
					if [ "$answer" = "N" ]; then
 | 
				
			||||||
echo
 | 
					    echo "$info_txt applying the upstream_truncation patch for nginx"
 | 
				
			||||||
 | 
					    patch -p1 < $root/patches/nginx-$main_ver-upstream_truncation.patch || exit 1
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo "$info_txt applying the channel-uninit-params patch for nginx"
 | 
					answer=`$root/util/ver-ge "$main_ver" 1.5.3`
 | 
				
			||||||
patch -p1 < $root/patches/nginx-$main_ver-channel-uninit-params.patch || exit 1
 | 
					if [ "$answer" = "N" ]; then
 | 
				
			||||||
echo
 | 
					    echo "$info_txt applying the channel-uninit-params patch for nginx"
 | 
				
			||||||
 | 
					    patch -p1 < $root/patches/nginx-$main_ver-channel-uninit-params.patch || exit 1
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo "$info_txt applying the dtrace patch for nginx"
 | 
					echo "$info_txt applying the dtrace patch for nginx"
 | 
				
			||||||
patch -p1 < $root/patches/nginx-$main_ver-dtrace.patch || exit 1
 | 
					patch -p1 < $root/patches/nginx-$main_ver-dtrace.patch || exit 1
 | 
				
			||||||
@ -153,9 +159,12 @@ if [ "$answer" = "N" ]; then
 | 
				
			|||||||
    echo
 | 
					    echo
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo "$info_txt applying patches/nginx-$main_ver-invalid_referer_hash.patch for nginx"
 | 
					answer=`$root/util/ver-ge "$main_ver" 1.5.3`
 | 
				
			||||||
patch -p1 < $root/patches/nginx-$main_ver-invalid_referer_hash.patch || exit 1
 | 
					if [ "$answer" = "N" ]; then
 | 
				
			||||||
echo
 | 
					    echo "$info_txt applying patches/nginx-$main_ver-invalid_referer_hash.patch for nginx"
 | 
				
			||||||
 | 
					    patch -p1 < $root/patches/nginx-$main_ver-invalid_referer_hash.patch || exit 1
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
answer=`$root/util/ver-ge "$main_ver" 1.4.1`
 | 
					answer=`$root/util/ver-ge "$main_ver" 1.4.1`
 | 
				
			||||||
if [ "$answer" = "Y" ]; then
 | 
					if [ "$answer" = "Y" ]; then
 | 
				
			||||||
@ -164,6 +173,13 @@ if [ "$answer" = "Y" ]; then
 | 
				
			|||||||
    echo
 | 
					    echo
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					answer=`$root/util/ver-ge "$main_ver" 1.5.3`
 | 
				
			||||||
 | 
					if [ "$answer" = "N" ]; then
 | 
				
			||||||
 | 
					    echo "$info_txt applying the unix_socket_accept_over_read patch for lua $ver"
 | 
				
			||||||
 | 
					    patch -p1 < $root/patches/nginx-$ver-unix_socket_accept_over_read.patch || exit 1
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rm -f *.patch || exit 1
 | 
					rm -f *.patch || exit 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cd .. || exit 1
 | 
					cd .. || exit 1
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user