Merge pull request #110 from pagespeed/jefftk-request-context
request context: deal with changes in pagespeed's api
This commit is contained in:
@@ -24,9 +24,10 @@
|
||||
|
||||
namespace net_instaweb {
|
||||
|
||||
NgxBaseFetch::NgxBaseFetch(ngx_http_request_t* r, int pipe_fd)
|
||||
: request_(r), done_called_(false), last_buf_sent_(false),
|
||||
pipe_fd_(pipe_fd) {
|
||||
NgxBaseFetch::NgxBaseFetch(ngx_http_request_t* r, int pipe_fd,
|
||||
const RequestContextPtr& request_ctx)
|
||||
: AsyncFetch(request_ctx), request_(r), done_called_(false),
|
||||
last_buf_sent_(false), pipe_fd_(pipe_fd) {
|
||||
if (pthread_mutex_init(&mutex_, NULL)) CHECK(0);
|
||||
PopulateRequestHeaders();
|
||||
}
|
||||
|
||||
@@ -45,7 +45,8 @@ namespace net_instaweb {
|
||||
|
||||
class NgxBaseFetch : public AsyncFetch {
|
||||
public:
|
||||
NgxBaseFetch(ngx_http_request_t* r, int pipe_fd);
|
||||
NgxBaseFetch(ngx_http_request_t* r, int pipe_fd,
|
||||
const RequestContextPtr& request_ctx);
|
||||
virtual ~NgxBaseFetch();
|
||||
|
||||
// Copies the request headers out of request_->headers_in->headers.
|
||||
|
||||
+10
-4
@@ -39,6 +39,7 @@ extern "C" {
|
||||
#include "ngx_base_fetch.h"
|
||||
|
||||
#include "net/instaweb/automatic/public/proxy_fetch.h"
|
||||
#include "net/instaweb/http/public/request_context.h"
|
||||
#include "net/instaweb/rewriter/public/furious_matcher.h"
|
||||
#include "net/instaweb/rewriter/public/process_context.h"
|
||||
#include "net/instaweb/rewriter/public/rewrite_driver.h"
|
||||
@@ -1054,7 +1055,10 @@ ps_create_request_context(ngx_http_request_t* r, bool is_resource_fetch) {
|
||||
|
||||
// Deletes itself when HandleDone is called, which happens when we call Done()
|
||||
// on the proxy fetch below.
|
||||
ctx->base_fetch = new net_instaweb::NgxBaseFetch(r, file_descriptors[1]);
|
||||
ctx->base_fetch = new net_instaweb::NgxBaseFetch(
|
||||
r, file_descriptors[1],
|
||||
net_instaweb::RequestContextPtr(new net_instaweb::RequestContext(
|
||||
cfg_s->server_context->thread_system()->NewMutex())));
|
||||
|
||||
// If null, that means use global options.
|
||||
net_instaweb::RewriteOptions* custom_options;
|
||||
@@ -1094,13 +1098,15 @@ ps_create_request_context(ngx_http_request_t* r, bool is_resource_fetch) {
|
||||
// rewrite drivers and so is faster because there's no wait to construct
|
||||
// them. Otherwise we have to build a new one every time.
|
||||
net_instaweb::RewriteDriver* driver;
|
||||
|
||||
if (custom_options == NULL) {
|
||||
driver = cfg_s->server_context->NewRewriteDriver();
|
||||
driver = cfg_s->server_context->NewRewriteDriver(
|
||||
ctx->base_fetch->request_context());
|
||||
} else {
|
||||
// NewCustomRewriteDriver takes ownership of custom_options.
|
||||
driver = cfg_s->server_context->NewCustomRewriteDriver(custom_options);
|
||||
driver = cfg_s->server_context->NewCustomRewriteDriver(
|
||||
custom_options, ctx->base_fetch->request_context());
|
||||
}
|
||||
driver->set_log_record(ctx->base_fetch->log_record());
|
||||
|
||||
// TODO(jefftk): FlushEarlyFlow would go here.
|
||||
|
||||
|
||||
@@ -48,6 +48,7 @@ PAGESPEED_EXPECTED_FAILURES="
|
||||
~compression is enabled for rewritten JS.~
|
||||
~convert_meta_tags~
|
||||
~regression test with same filtered input twice in combination~
|
||||
~insert_dns_prefetch~
|
||||
"
|
||||
|
||||
source $SYSTEM_TEST_FILE
|
||||
|
||||
Reference in New Issue
Block a user