From ae2d4bac7f7b182f5228d7f71711dec8dc3a2fbc Mon Sep 17 00:00:00 2001 From: Jeff Kaufman Date: Thu, 19 Dec 2013 12:46:53 -0500 Subject: [PATCH 1/5] native-fetcher: fix to work with nginx 1.5.8+ nginx 1.5.8 changed the resolver api, which the native fetcher uses. Fixes #578. Squash-merge of @dinic's #581. --- src/ngx_fetch.cc | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/ngx_fetch.cc b/src/ngx_fetch.cc index bf1bddc78..c4f8095ca 100644 --- a/src/ngx_fetch.cc +++ b/src/ngx_fetch.cc @@ -24,6 +24,10 @@ // - The read handler parses the response. Add the response to the buffer at // last. +extern "C" { +#include +} + #include "ngx_fetch.h" #include "net/instaweb/util/public/basictypes.h" #include "base/logging.h" @@ -164,7 +168,11 @@ namespace net_instaweb { resolver_ctx_->data = this; resolver_ctx_->name.data = url_.host.data; resolver_ctx_->name.len = url_.host.len; + +#if (nginx_version < 1005008) resolver_ctx_->type = NGX_RESOLVE_A; +#endif + resolver_ctx_->handler = NgxFetchResolveDone; resolver_ctx_->timeout = fetcher_->resolver_timeout_; @@ -299,9 +307,20 @@ namespace net_instaweb { return; } ngx_memzero(&fetch->sin_, sizeof(fetch->sin_)); + +#if (nginx_version < 1005008) + fetch->sin_.sin_addr.s_addr = resolver_ctx->addrs[0]; +#else + + struct sockaddr_in *sin; + sin = reinterpret_cast( + resolver_ctx->addrs[0].sockaddr); + fetch->sin_.sin_family = sin->sin_family; + fetch->sin_.sin_addr.s_addr = sin->sin_addr.s_addr; +#endif + fetch->sin_.sin_family = AF_INET; fetch->sin_.sin_port = htons(fetch->url_.port); - fetch->sin_.sin_addr.s_addr = resolver_ctx->addrs[0]; char* ip_address = inet_ntoa(fetch->sin_.sin_addr); From 72ddb34a1c40e5fc1ee9e6bb0a8f861e8f0dc4de Mon Sep 17 00:00:00 2001 From: Jeff Kaufman Date: Mon, 6 Jan 2014 16:51:41 -0500 Subject: [PATCH 2/5] readme: release 1.7.30.2 --- README.md | 20 ++++++++++---------- config | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 7d66cf941..7d42caf3a 100644 --- a/README.md +++ b/README.md @@ -37,21 +37,21 @@ recompiling Tengine](https://github.com/pagespeed/ngx_pagespeed/wiki/Using-ngx_p ```bash $ cd ~ - $ wget https://github.com/pagespeed/ngx_pagespeed/archive/release-1.7.30.1-beta.zip - $ unzip release-1.7.30.1-beta.zip # or unzip release-1.7.30.1-beta - $ cd ngx_pagespeed-release-1.7.30.1-beta/ - $ wget https://dl.google.com/dl/page-speed/psol/1.7.30.1.tar.gz - $ tar -xzvf 1.7.30.1.tar.gz # expands to psol/ + $ wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.7.30.2-beta.zip + $ unzip v1.7.30.2-beta.zip # or unzip v1.7.30.2-beta + $ cd ngx_pagespeed-1.7.30.2-beta/ + $ wget https://dl.google.com/dl/page-speed/psol/1.7.30.2.tar.gz + $ tar -xzvf 1.7.30.2.tar.gz # expands to psol/ ``` 3. Download and build nginx: ```bash $ # check http://nginx.org/en/download.html for the latest version - $ wget http://nginx.org/download/nginx-1.4.3.tar.gz - $ tar -xvzf nginx-1.4.3.tar.gz - $ cd nginx-1.4.3/ - $ ./configure --add-module=$HOME/ngx_pagespeed-release-1.7.30.1-beta + $ wget http://nginx.org/download/nginx-1.4.4.tar.gz + $ tar -xvzf nginx-1.4.4.tar.gz + $ cd nginx-1.4.4/ + $ ./configure --add-module=$HOME/ngx_pagespeed-1.7.30.2-beta $ make $ sudo make install ``` @@ -94,7 +94,7 @@ To confirm that the module is loaded, fetch a page and check that you see the ```bash $ curl -I 'http://localhost:8050/some_page/' | grep X-Page-Speed -X-Page-Speed: 1.7.30.1-... +X-Page-Speed: 1.7.30.2-... ``` Looking at the source of a few pages you should see various changes, such as diff --git a/config b/config index e90b6a140..1ba824811 100644 --- a/config +++ b/config @@ -27,8 +27,8 @@ if [ "$mod_pagespeed_dir" = "unset" ] ; then echo " You need to separately download the pagespeed library:" echo "" echo " $ cd /path/to/ngx_pagespeed" - echo " $ wget https://dl.google.com/dl/page-speed/psol/1.7.30.1.tar.gz" - echo " $ tar -xzvf 1.7.30.1.tar.gz # expands to psol/" + echo " $ wget https://dl.google.com/dl/page-speed/psol/1.7.30.2.tar.gz" + echo " $ tar -xzvf 1.7.30.2.tar.gz # expands to psol/" echo "" echo " Or see the installation instructions:" echo " https://github.com/pagespeed/ngx_pagespeed#how-to-build" From 1354cee4edcb4557236da1a8ce0d3d6dad19dd9f Mon Sep 17 00:00:00 2001 From: Huibao Lin Date: Thu, 16 Jan 2014 15:06:49 -0500 Subject: [PATCH 3/5] release: prepare 1.7.30.3 --- README.md | 14 +++++++------- config | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 7d42caf3a..f687c7025 100644 --- a/README.md +++ b/README.md @@ -37,11 +37,11 @@ recompiling Tengine](https://github.com/pagespeed/ngx_pagespeed/wiki/Using-ngx_p ```bash $ cd ~ - $ wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.7.30.2-beta.zip - $ unzip v1.7.30.2-beta.zip # or unzip v1.7.30.2-beta - $ cd ngx_pagespeed-1.7.30.2-beta/ - $ wget https://dl.google.com/dl/page-speed/psol/1.7.30.2.tar.gz - $ tar -xzvf 1.7.30.2.tar.gz # expands to psol/ + $ wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.7.30.3-beta.zip + $ unzip v1.7.30.3-beta.zip # or unzip v1.7.30.3-beta + $ cd ngx_pagespeed-1.7.30.3-beta/ + $ wget https://dl.google.com/dl/page-speed/psol/1.7.30.3.tar.gz + $ tar -xzvf 1.7.30.3.tar.gz # expands to psol/ ``` 3. Download and build nginx: @@ -51,7 +51,7 @@ recompiling Tengine](https://github.com/pagespeed/ngx_pagespeed/wiki/Using-ngx_p $ wget http://nginx.org/download/nginx-1.4.4.tar.gz $ tar -xvzf nginx-1.4.4.tar.gz $ cd nginx-1.4.4/ - $ ./configure --add-module=$HOME/ngx_pagespeed-1.7.30.2-beta + $ ./configure --add-module=$HOME/ngx_pagespeed-1.7.30.3-beta $ make $ sudo make install ``` @@ -94,7 +94,7 @@ To confirm that the module is loaded, fetch a page and check that you see the ```bash $ curl -I 'http://localhost:8050/some_page/' | grep X-Page-Speed -X-Page-Speed: 1.7.30.2-... +X-Page-Speed: 1.7.30.3-... ``` Looking at the source of a few pages you should see various changes, such as diff --git a/config b/config index 1ba824811..0e958d2a0 100644 --- a/config +++ b/config @@ -27,8 +27,8 @@ if [ "$mod_pagespeed_dir" = "unset" ] ; then echo " You need to separately download the pagespeed library:" echo "" echo " $ cd /path/to/ngx_pagespeed" - echo " $ wget https://dl.google.com/dl/page-speed/psol/1.7.30.2.tar.gz" - echo " $ tar -xzvf 1.7.30.2.tar.gz # expands to psol/" + echo " $ wget https://dl.google.com/dl/page-speed/psol/1.7.30.3.tar.gz" + echo " $ tar -xzvf 1.7.30.3.tar.gz # expands to psol/" echo "" echo " Or see the installation instructions:" echo " https://github.com/pagespeed/ngx_pagespeed#how-to-build" From 497594ba7f3680937440145f4d9f6c35b76ef6bd Mon Sep 17 00:00:00 2001 From: Huibao Lin Date: Thu, 13 Mar 2014 10:18:57 -0400 Subject: [PATCH 4/5] release: build against backported change --- src/ngx_pagespeed.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ngx_pagespeed.cc b/src/ngx_pagespeed.cc index 3885ede15..d88af3388 100644 --- a/src/ngx_pagespeed.cc +++ b/src/ngx_pagespeed.cc @@ -2175,6 +2175,7 @@ ngx_int_t ps_in_place_check_header_filter(ngx_http_request_t* r) { // (or at least a note that it cannot be cached stored there). // We do that using an Apache output filter. ctx->recorder = new InPlaceResourceRecorder( + RequestContextPtr(cfg_s->server_context->NewRequestContext(r)), url, request_headers.release(), options->respect_vary(), @@ -2238,7 +2239,9 @@ ngx_int_t ps_in_place_body_filter(ngx_http_request_t* r, ngx_chain_t* in) { // Unlike in Apache we get the final response headers before we get the // content. This means we can consider them earlier and abort the // request if need be without buffering everything. - recorder->ConsiderResponseHeaders(ctx->ipro_response_headers); + recorder->ConsiderResponseHeaders( + InPlaceResourceRecorder::kPreliminaryHeaders, + ctx->ipro_response_headers); } for (ngx_chain_t* cl = in; cl; cl = cl->next) { From 86d840f76eecb814aebc46bcf399830fa3d83b56 Mon Sep 17 00:00:00 2001 From: Huibao Lin Date: Thu, 13 Mar 2014 10:27:21 -0400 Subject: [PATCH 5/5] release: udpate version number 1.7.30.3 to 1.7.30.4 --- README.md | 14 +++++++------- config | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index f687c7025..6fe004557 100644 --- a/README.md +++ b/README.md @@ -37,11 +37,11 @@ recompiling Tengine](https://github.com/pagespeed/ngx_pagespeed/wiki/Using-ngx_p ```bash $ cd ~ - $ wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.7.30.3-beta.zip - $ unzip v1.7.30.3-beta.zip # or unzip v1.7.30.3-beta - $ cd ngx_pagespeed-1.7.30.3-beta/ - $ wget https://dl.google.com/dl/page-speed/psol/1.7.30.3.tar.gz - $ tar -xzvf 1.7.30.3.tar.gz # expands to psol/ + $ wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.7.30.4-beta.zip + $ unzip v1.7.30.4-beta.zip # or unzip v1.7.30.4-beta + $ cd ngx_pagespeed-1.7.30.4-beta/ + $ wget https://dl.google.com/dl/page-speed/psol/1.7.30.4.tar.gz + $ tar -xzvf 1.7.30.4.tar.gz # expands to psol/ ``` 3. Download and build nginx: @@ -51,7 +51,7 @@ recompiling Tengine](https://github.com/pagespeed/ngx_pagespeed/wiki/Using-ngx_p $ wget http://nginx.org/download/nginx-1.4.4.tar.gz $ tar -xvzf nginx-1.4.4.tar.gz $ cd nginx-1.4.4/ - $ ./configure --add-module=$HOME/ngx_pagespeed-1.7.30.3-beta + $ ./configure --add-module=$HOME/ngx_pagespeed-1.7.30.4-beta $ make $ sudo make install ``` @@ -94,7 +94,7 @@ To confirm that the module is loaded, fetch a page and check that you see the ```bash $ curl -I 'http://localhost:8050/some_page/' | grep X-Page-Speed -X-Page-Speed: 1.7.30.3-... +X-Page-Speed: 1.7.30.4-... ``` Looking at the source of a few pages you should see various changes, such as diff --git a/config b/config index 0e958d2a0..6906807a5 100644 --- a/config +++ b/config @@ -27,8 +27,8 @@ if [ "$mod_pagespeed_dir" = "unset" ] ; then echo " You need to separately download the pagespeed library:" echo "" echo " $ cd /path/to/ngx_pagespeed" - echo " $ wget https://dl.google.com/dl/page-speed/psol/1.7.30.3.tar.gz" - echo " $ tar -xzvf 1.7.30.3.tar.gz # expands to psol/" + echo " $ wget https://dl.google.com/dl/page-speed/psol/1.7.30.4.tar.gz" + echo " $ tar -xzvf 1.7.30.4.tar.gz # expands to psol/" echo "" echo " Or see the installation instructions:" echo " https://github.com/pagespeed/ngx_pagespeed#how-to-build"