Commit Graph

420 Commits

Author SHA1 Message Date
Jeff Kaufman f78058b6c4 Allow use of "unplugged" without crashing (#1362)
* update mps

* stop crashing when unplugged

* formatting fixes
2017-01-19 13:48:01 -05:00
Otto van der Schaaf 76eeec5972 special-responses: fix for hanging sometimes on special responses (#1238)
After calling ngx_http_filter_finalize_request return NGX_DONE
as we are still in pre-access phase. This bug shows up when the
"special" response is generated from, for example, php as opposed
to a static file.

Second part of the fix for
https://github.com/pagespeed/ngx_pagespeed/issues/1146
2016-09-07 10:49:53 +02:00
Egor Suvorov 4b7a7cc15e Make NgxMessageHandler::FileMessage() add data into internal buffer as well (#1255) 2016-08-25 15:10:46 -04:00
Otto van der Schaaf 3015cf0372 Allow processing of script variablies in more options (#1239)
All directory- and process- scoped options are allowed with this
change, when "ProcessScriptVariables all" is specified.

Option list compiled from:
https://docs.google.com/spreadsheets/d/1qJSUZqd2Te-4SDtm1Av6u-AckNv_oHEp1qdaUjNqZoM/edit#gid=0
2016-08-10 21:04:47 +02:00
Jeff Kaufman 7fd0f3ee2f rewrite-options: don't turn on CoreFilters just because of query params (#1228)
Fixes https://github.com/pagespeed/ngx_pagespeed/issues/1190
2016-08-04 10:44:46 -07:00
Otto van der Schaaf 572f59299e Check options->IsAllowed() before rewriting html. (#1225)
Fixes https://github.com/pagespeed/ngx_pagespeed/issues/1226
2016-07-15 20:41:19 +02:00
Otto van der Schaaf ebe7c61f4f Make ngx_pagespeed behave like mod_pagespeed with regard to Flushing (#1217)
This change makes ngx_pagespeed listen to the FollowFlushes option.
When set to on (=default), ngx_pagespeed will forward incoming flushes
to ProxyFetch. When writing output, we'll now also set the flush flag on
the buffers we are about to send downstream.

Companion to mps commit: https://github.com/pagespeed/mod_pagespeed/commit/02de03e825bbd1f8d4ad4e1a1bef5263a16f3857
2016-07-12 12:26:38 -04:00
Otto van der Schaaf e542347a20 Fix for when there is only server-level configuration (#1218)
When there is no top-level configuration but only server configuration,
we don't have main options to set and consider. This prevents
a NULL dereference in that case. (Later on we'll writes out a message
about why we cannot startup with this configuration).
2016-07-06 16:13:05 +02:00
Otto van der Schaaf b1d9fbf544 Fix segfault when there's no http{} block in nginx.conf (#1221)
Should fix https://github.com/pagespeed/ngx_pagespeed/issues/1220
2016-07-06 16:12:04 +02:00
Maks Orlovich 03d69e53b1 Update for API change: kProcessScope is about to become kLegacyProcessScope (#1205)
The renaming is to make it clear that kProcessScopeStrict (aka what
ngx_pagespeed does for everything already) is what new code should be
using, rather than current kProcessScope/upcoming kLegacyProcessScope
which does weird backwards compatible things in mod_pagespeed.
2016-05-30 12:52:41 -04:00
Maks Orlovich 15c6f7c345 Make sure RewriteDriverFactory::default_options gets the top-level proces-scope options. (#1203)
Needed for ImageMaxRewritesAtOnce to work with latest revisions.
2016-05-20 10:07:24 -04:00
hillsp 77cd95b552 Fix IPRO and missing Content-Length headers in 32-bit builds. (#1196) 2016-05-11 13:34:00 -04:00
Joshua Marantz be7837507f respect purge requests when serving ipro requests from ngx_pagespeed (#1193)
* respect purge requests when serving ipro requests from ngx_pagespeed

* Add TODO to share common base with ApacheFetch.
2016-05-11 11:08:04 -04:00
Maks Orlovich e885e02a3c Fix build with recent nginx which lacks NGX_CONF_MULTI (#1185) 2016-04-26 15:37:26 -04:00
Jeff Kaufman f3063e2daa Companion to mps change to set s-maxage on unoptimized ipro resources (#1171) 2016-04-07 16:02:02 -04:00
Otto van der Schaaf 56ee9ff24e Fix for async waits vs client aborts and HTTP/2 RST_FRAMES
This change makes nginx close the request when we receive a close

event or RST_STREAM while waiting for an async PSOL op to complete

by setting a read event handler, as inspired by the limit request

module from nginx.



Should fix https://github.com/pagespeed/ngx_pagespeed/issues/1146
2016-04-07 10:35:19 -04:00
Joshua Marantz c0e917801d remove a no-longer-needed arg to ProxyFetchFactory::InitiatePropertyCacheLookup 2016-03-28 13:42:28 -04:00
Otto van der Schaaf 6634754dba NgxFetch: Log url and error when url parsing fails.
Fixes https://github.com/pagespeed/ngx_pagespeed/issues/1148
2016-03-11 14:34:24 +01:00
Jeff Kaufman a9142f0003 Merge pull request #1105 from pagespeed/oschaaf-trunk-tracking-issue-1064
vary-header: Emit a single vary header in the IPRO flow
2016-03-08 06:21:46 -08:00
Jeff Kaufman 8efb831ba4 Support centralized process changes in github.com/pagespeed/mod_pagespeed/commit/9bf7523 2016-03-07 16:14:43 -05:00
Otto van der Schaaf 85d0db2550 IPRO: Copy the cache control value to ensure a correct lifetime
Fixes https://github.com/pagespeed/ngx_pagespeed/issues/1138
2016-03-02 23:42:36 +01:00
Otto van der Schaaf f60c754d82 Fix shutdown when ngx_pagespeed is completely disabled.
Fixes https://github.com/pagespeed/ngx_pagespeed/issues/1120
2016-02-15 10:54:53 +01:00
Prayag Verma 929c5c5908 Fix a typo
`neet` → `need`
2016-02-11 13:18:13 -05:00
Otto van der Schaaf b081bb7aec vary-header: Emit a single vary header in the IPRO flow
The report from some time ago mentioned three Vary: headers,
but I can now only reproduce two using trunk-tracking plus the
original repro-configuration.

This fix unflags r->gzip_vary as set by the gzip module when PSOL
hands us Vary: Accept-Encoding, to make sure that nginx's core
header filter doesn't append another one.

Fixes https://github.com/pagespeed/ngx_pagespeed/issues/1064
2016-01-28 03:37:01 +01:00
Maks Orlovich 0a60e0ef8b Adjust our UA string to fix to make it compatible with fonts.google.com parsing on IE11.
Counterpart of:
https://github.com/pagespeed/mod_pagespeed/commit/f3639e84c0196a5f5151ff5e54ad57285db09b37
2016-01-27 09:16:49 -05:00
Maks Orlovich 1926c78ca2 Merge pull request #1102 from pagespeed/morlovich-no-more-spdy-specific-config
Adjust to library API change: no more spdy-specific config.
2016-01-25 15:33:35 -05:00
Maks Orlovich c3598134ee Adjust to library API change: no more spdy-specific config. 2016-01-25 12:33:29 -05:00
Otto van der Schaaf 60c1f4cc4e Fix valgrind complaint caused by NgxBaseFetch
We should not use r->connection after we finalize the request.

Fixes https://github.com/pagespeed/ngx_pagespeed/issues/1100
2016-01-22 16:06:42 +01:00
Otto van der Schaaf b88e067c6d Eliminate CHECK that fails (rarely) during the IPRO lookup.
Fixes https://github.com/pagespeed/ngx_pagespeed/issues/1096
2016-01-21 22:08:43 +01:00
Maks Orlovich 653875cb68 Merge pull request #1076 from pagespeed/morlovich-h2-bit
Store whether h2 is in use in RequestContext.
2016-01-05 12:35:51 -05:00
Otto van der Schaaf a4441220b1 Merge pull request #1085 from pagespeed/oschaaf-trunk-tracking-internal-redirect-crasher
Fix crasher on 404 .pagespeed. resources w/a custom location
2016-01-04 22:03:05 +01:00
Jeffrey Crowell 059dd20b10 reapply: location-header: tweak location header handling
- Fix potentially sending the location header into PSOL twice.
- Be more thorough when unsetting the location header

Attempts to fix #725

from oschaaf
2015-12-31 10:46:39 -05:00
Otto van der Schaaf 1964ef5219 Fix crasher on 404 .pagespeed. resources w/a custom location
- Fix nginx-side flow so we handle .pagespeed. resources ok
  when they will land on a customized 404 internal location.
- Additionally, check for a wiped request context and make sure
  we do not dereference a null pointer, which is what hurt in
  the flow we entered above as the IPRO lookup still was
  generating events while the nginx side request context was
  gone.
- Also, as a preliminary measure, do not check fail when we
  receive a stale event originating from a NgxBaseFetch that
  is no longer associated with our request context.
  Do log a warning so we'll hear about this happening either
  through system test failures or a bug report.

Fixes https://github.com/pagespeed/ngx_pagespeed/issues/1081
2015-12-28 15:59:13 +01:00
Jeff Kaufman 56a5d41ec3 Restore dropped fix for #957
@rfnx fixed #957 in acb89a, but this was accidentally merged to master
instead of trunk-tracking.  I checked for this sort of problem as part
of the 1.10 release, but missed this commit.  Restored.

Fixes #1054
2015-12-18 15:01:15 -05:00
Jeff Kaufman 7ee1efe0dd Merge pull request #1071 from pagespeed/oschaaf-trunk-tracking-log-debug-noise
log: initialize logging earlier
2015-12-17 11:36:34 -05:00
Maks Orlovich eb2a81ee79 Store whether h2 is in use in RequestContext. 2015-12-15 09:29:02 -05:00
Otto van der Schaaf 37e1c3618a log: initialize logging earlier
It turns out to be possible to initialize logging earlier by
grabbing the log from a global ngx_cycle structure.

This makes us start logging earlier, yet loses the
"No threading detected ..." messages both from stderr and
in error.log when nginx initially starts.

With this change, these messages will now be logged as we start
logging earlier:

"
flush
.
"

These originate from SystemCachePath::CacheKey which appends
newlines to the key, and the resulting cache key ends up being
logged. We might want to change that, because the resulting
lines in error.log look weird and might raise questions.

Fixes https://github.com/pagespeed/ngx_pagespeed/issues/895
2015-12-11 12:02:21 +01:00
Maks Orlovich c9d4912746 Merge pull request #1050 from pagespeed/morlovich-compiler-req
Add compiler version checks for what we want to support going forward.

Also make us actually build with clang (the log_message_handler.cc change
and config.make change)
2015-12-09 14:50:11 -05:00
Otto van der Schaaf 40c05b4a4f location-header: Be careful with headers_out->location
Only set headers_out->location when the upstream originally did
as well. If the Location: header value involved starts with "/"
nginx will absolutify it, ignoring any X-Forwarded-Proto header
in the process.

Fixes https://github.com/pagespeed/ngx_pagespeed/issues/819
(Confirmed: https://github.com/pagespeed/ngx_pagespeed/issues/1029)
Hopefully fixes https://github.com/pagespeed/ngx_pagespeed/issues/711
2015-12-01 18:55:02 +01:00
Maks Orlovich bc875647f1 Add compiler version checks for what we want to support going forward,
and make us actually build with clang (the log_message_handler.cc change
and config.make change)
2015-11-25 13:44:13 -05:00
Jeff Kaufman 4628e1c0ea Merge pull request #1035 from pagespeed/jefftk-script-var-testing
Support script variables in ShardDomain
2015-11-19 11:01:41 -08:00
Jeffrey Crowell 804f234268 add remaining shortcuts to headers_out_t
this change is required for gzip cache change going into mod_pagespeed.
2015-11-16 10:56:23 -05:00
Jeff Kaufman ea82f0de19 Support script variables in ShardDomain 2015-11-02 10:08:00 -05:00
Jeff Kaufman 5f312820e5 Merge pull request #974 from pagespeed/jefftk-handler-restrictions
Add support for blocking access to our handlers.
2015-11-02 08:18:10 -05:00
Otto van der Schaaf 634b813071 IPRO+MPD: Make In-Place-Resource-Optimization with MapProxyDomain work
Fixes https://github.com/pagespeed/ngx_pagespeed/issues/1015

Pull with MPS Side for this change:
https://github.com/pagespeed/mod_pagespeed/pull/1161
2015-10-27 18:11:35 +01:00
Joshua Marantz 3a6e833eae Don't call RewriteDriver::SetUserAgent on the UA in the request-headers.
RewriteDriver::SetRequestHeaders already pulls the UA from the request-headers.
2015-10-22 14:19:00 -04:00
Joshua Marantz 90c8ac8a12 Revert "Don't call RewriteDriver::SetUserAgent as the user-agent is already in the request-headers"
This reverts commit 6ccc1c513b.
2015-10-22 14:13:01 -04:00
Joshua Marantz 6ccc1c513b Don't call RewriteDriver::SetUserAgent as the user-agent is already in the request-headers 2015-10-22 13:20:00 -04:00
Jeff Kaufman fe47eeb4f3 Add support for blocking access to our handlers.
Nginx side of the fix for https://github.com/pagespeed/mod_pagespeed/issues/1088
2015-09-18 09:03:01 -04:00
Jeff Kaufman 7f477d6575 config: whitelist a few more directives for script variables
When configuring downstream caching if you have an origin with multiple caches in front of it you might want to choose how you handle requests in response to which cache you're getting them from.  Whitelist DownstreamCachePurgeLocationPrefix, DownstreamCachePurgeMethod, and DownstreamCacheRewrittenPercentageThreshold for scripting so this is possible.
2015-07-22 10:32:41 -04:00