You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by os...@apache.org on 2015/05/15 11:05:58 UTC

trafficserver git commit: TS-3251 ats-pagespeed plugin upgrade to use PageSpeed 1.9.32.3

Repository: trafficserver
Updated Branches:
  refs/heads/master 97ad57d88 -> 70a6c94dd


TS-3251 ats-pagespeed plugin upgrade to use PageSpeed 1.9.32.3

Upgrade to use PageSpeed 1.9.32.3.


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/70a6c94d
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/70a6c94d
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/70a6c94d

Branch: refs/heads/master
Commit: 70a6c94ddeaf4a29b7c6d2fd78b310b2b57ca7ad
Parents: 97ad57d
Author: Otto van der Schaaf <os...@we-amp.com>
Authored: Thu May 14 13:24:39 2015 +0200
Committer: Otto van der Schaaf <os...@we-amp.com>
Committed: Thu May 14 18:25:32 2015 +0200

----------------------------------------------------------------------
 plugins/experimental/ats_pagespeed/Makefile     |   8 +-
 .../experimental/ats_pagespeed/ats_pagespeed.cc | 170 ++++++++++++-------
 .../experimental/ats_pagespeed/ats_pagespeed.h  |  18 +-
 .../ats_pagespeed/ats_process_context.cc        |   1 +
 .../ats_pagespeed/ats_resource_intercept.cc     |  59 ++++---
 plugins/experimental/ats_pagespeed/gzip/misc.h  |   6 +-
 6 files changed, 160 insertions(+), 102 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/70a6c94d/plugins/experimental/ats_pagespeed/Makefile
----------------------------------------------------------------------
diff --git a/plugins/experimental/ats_pagespeed/Makefile b/plugins/experimental/ats_pagespeed/Makefile
index 9177b44..b0b0e7d 100644
--- a/plugins/experimental/ats_pagespeed/Makefile
+++ b/plugins/experimental/ats_pagespeed/Makefile
@@ -61,11 +61,11 @@ PSOL_LIBS = $(PAGESPEED_OUT)pagespeed_automatic.a
 
 all: psol gzip/gzip.so ats_pagespeed.so
 
-1.8.31.4.tar.gz:
-	wget --no-check-certificate https://dl.google.com/dl/page-speed/psol/1.8.31.4.tar.gz
+1.9.32.3.tar.gz:
+	wget --no-check-certificate https://dl.google.com/dl/page-speed/psol/1.9.32.3.tar.gz
 
-psol/: 1.8.31.4.tar.gz
-	tar -xzvf 1.8.31.4.tar.gz
+psol/: 1.9.32.3.tar.gz
+	tar -xzvf 1.9.32.3.tar.gz
 
 gzip/gzip.so:
 	cd gzip && make

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/70a6c94d/plugins/experimental/ats_pagespeed/ats_pagespeed.cc
----------------------------------------------------------------------
diff --git a/plugins/experimental/ats_pagespeed/ats_pagespeed.cc b/plugins/experimental/ats_pagespeed/ats_pagespeed.cc
index f0aad4e..81fdab2 100644
--- a/plugins/experimental/ats_pagespeed/ats_pagespeed.cc
+++ b/plugins/experimental/ats_pagespeed/ats_pagespeed.cc
@@ -205,40 +205,56 @@ ats_ctx_destroy(TransformCtx *ctx)
   TSfree(ctx);
 }
 
+// Wrapper around GetQueryOptions()
 RewriteOptions *
-ps_determine_request_options(ServerContext *server_context, RequestHeaders *request_headers, ResponseHeaders *response_headers,
-                             GoogleUrl *url)
+ps_determine_request_options(const RewriteOptions *domain_options, /* may be null */
+                             RequestHeaders *request_headers, ResponseHeaders *response_headers, RequestContextPtr request_context,
+                             ServerContext *server_context, GoogleUrl *url, GoogleString *pagespeed_query_params,
+                             GoogleString *pagespeed_option_cookies)
 {
-  // Stripping ModPagespeed query params before the property cache lookup to
-  // make cache key consistent for both lookup and storing in cache.
-  //
   // Sets option from request headers and url.
   RewriteQuery rewrite_query;
-  if (!server_context->GetQueryOptions(url, request_headers, response_headers, &rewrite_query)) {
+  if (!server_context->GetQueryOptions(request_context, domain_options, url, request_headers, response_headers, &rewrite_query)) {
     // Failed to parse query params or request headers.  Treat this as if there
     // were no query params given.
-    TSError("ps_route rerquest: parsing headers or query params failed.");
+    TSError("ps_route request: parsing headers or query params failed.");
     return NULL;
   }
 
+  *pagespeed_query_params = rewrite_query.pagespeed_query_params().ToEscapedString();
+  *pagespeed_option_cookies = rewrite_query.pagespeed_option_cookies().ToEscapedString();
+
   // Will be NULL if there aren't any options set with query params or in
   // headers.
   return rewrite_query.ReleaseOptions();
 }
 
+// There are many sources of options:
+//  - the request (query parameters, headers, and cookies)
+//  - location block
+//  - global server options
+//  - experiment framework
+// Consider them all, returning appropriate options for this request, of which
+// the caller takes ownership.  If the only applicable options are global,
+// set options to NULL so we can use server_context->global_options().
 bool
-ps_determine_options(ServerContext *server_context,
-                     // Directory-specific options, usually null.  They've already been rebased off
-                     // of the global options as part of the configuration process.
-                     RewriteOptions *directory_options, RequestHeaders *request_headers, ResponseHeaders *response_headers,
-                     RewriteOptions **options, GoogleUrl *url)
+ps_determine_options(ServerContext *server_context, RequestHeaders *request_headers, ResponseHeaders *response_headers,
+                     RewriteOptions **options, RequestContextPtr request_context, GoogleUrl *url,
+                     GoogleString *pagespeed_query_params, GoogleString *pagespeed_option_cookies, bool html_rewrite)
 {
   // Global options for this server.  Never null.
   RewriteOptions *global_options = server_context->global_options();
 
+  // TODO(oschaaf): we don't have directory_options right now. But if we did,
+  // we'd need to take them into account here.
+  RewriteOptions *directory_options = NULL;
+
   // Request-specific options, nearly always null.  If set they need to be
   // rebased on the directory options or the global options.
-  RewriteOptions *request_options = ps_determine_request_options(server_context, request_headers, response_headers, url);
+  // TODO(oschaaf): domain options..
+  RewriteOptions *request_options =
+    ps_determine_request_options(NULL /*domain options*/, request_headers, response_headers, request_context, server_context, url,
+                                 pagespeed_query_params, pagespeed_option_cookies);
 
   // Because the caller takes ownership of any options we return, the only
   // situation in which we can avoid allocating a new RewriteOptions is if the
@@ -406,15 +422,16 @@ get_override_expiry(const StringPiece &host)
 }
 
 AtsRewriteOptions *
-get_host_options(const StringPiece &host)
+get_host_options(const StringPiece &host, ServerContext *server_context)
 {
   TSMutexLock(config_mutex);
-  AtsRewriteOptions *r = NULL;
+  AtsRewriteOptions *r = (AtsRewriteOptions *)server_context->global_options()->Clone();
   AtsHostConfig *hc = config->Find(host.data(), host.size());
   if (hc->options() != NULL) {
     // We return a clone here to avoid having to thing about
     // configuration reloads and outstanding options
-    r = hc->options()->Clone();
+    hc->options()->ClearSignatureWithCaution();
+    r->Merge(*hc->options());
   }
   TSMutexUnlock(config_mutex);
   return r;
@@ -475,32 +492,51 @@ ats_transform_init(TSCont contp, TransformCtx *ctx)
   // TODO(oschaaf): fix host/ip(?)
   SystemRequestContext *system_request_context =
     new SystemRequestContext(server_context->thread_system()->NewMutex(), server_context->timer(), "www.foo.com", 80, "127.0.0.1");
+  RequestContextPtr rptr(system_request_context);
+  ctx->base_fetch = new AtsBaseFetch(server_context, rptr, ctx->downstream_vio, ctx->downstream_buffer, false);
 
-  ctx->base_fetch =
-    new AtsBaseFetch(server_context, RequestContextPtr(system_request_context), ctx->downstream_vio, ctx->downstream_buffer, false);
-
-
-  RewriteOptions *options = NULL;
+  ResponseHeaders response_headers;
   RequestHeaders *request_headers = new RequestHeaders();
   ctx->base_fetch->SetRequestHeadersTakingOwnership(request_headers);
   copy_request_headers_to_psol(reqp, req_hdr_loc, request_headers);
 
   TSHttpStatus status = TSHttpHdrStatusGet(bufp, hdr_loc);
-  // TODO(oschaaf): http version
-  ctx->base_fetch->response_headers()->set_status_code(status);
-  copy_response_headers_to_psol(bufp, hdr_loc, ctx->base_fetch->response_headers());
-  ctx->base_fetch->response_headers()->ComputeCaching();
-  const char *host = ctx->gurl->HostAndPort().as_string().c_str();
-  // request_headers->Lookup1(HttpAttributes::kHost);
-  if (host != NULL && strlen(host) > 0) {
-    ctx->options = get_host_options(host);
+  copy_response_headers_to_psol(bufp, hdr_loc, &response_headers);
+
+  std::string host = ctx->gurl->HostAndPort().as_string();
+  RewriteOptions *options = NULL;
+  if (host.size() > 0) {
+    options = get_host_options(host.c_str(), server_context);
+    if (options != NULL) {
+      server_context->message_handler()->Message(kInfo, "request options found \r\n");
+    }
+  }
+  if (options == NULL) {
+    options = server_context->global_options()->Clone();
   }
-  bool ok =
-    ps_determine_options(server_context, ctx->options, request_headers, ctx->base_fetch->response_headers(), &options, ctx->gurl);
 
+  server_context->message_handler()->Message(kInfo, "request options:\r\n[%s]", options->OptionsToString().c_str());
+
+  /*
+  RewriteOptions* options = NULL;
+  GoogleString pagespeed_query_params;
+  GoogleString pagespeed_option_cookies;
+  bool ok = ps_determine_options(server_context,
+                                 ctx->base_fetch->request_headers(),
+                                 &response_headers,
+                                 &options,
+                                 rptr,
+                                 ctx->gurl,
+                                 &pagespeed_query_params,
+                                 &pagespeed_option_cookies,
+                                 true);
+  */
+
+
+  // TODO(oschaaf): use the determined option/query params
   // Take ownership of custom_options.
   scoped_ptr<RewriteOptions> custom_options(options);
-
+  /*
   if (!ok) {
     TSError("Failure while determining request options for psol");
     options = server_context->global_options();
@@ -508,7 +544,7 @@ ats_transform_init(TSCont contp, TransformCtx *ctx)
     // ps_determine_options modified url, removing any ModPagespeedFoo=Bar query
     // parameters.  Keep url_string in sync with url.
     ctx->gurl->Spec().CopyToString(ctx->url_string);
-  }
+    }*/
 
   RewriteDriver *driver;
   if (custom_options.get() == NULL) {
@@ -516,9 +552,16 @@ ats_transform_init(TSCont contp, TransformCtx *ctx)
   } else {
     driver = server_context->NewCustomRewriteDriver(custom_options.release(), ctx->base_fetch->request_context());
   }
+  rptr->set_options(driver->options()->ComputeHttpOptions());
+  // TODO(oschaaf): http version
+  ctx->base_fetch->response_headers()->set_status_code(status);
+  copy_response_headers_to_psol(bufp, hdr_loc, ctx->base_fetch->response_headers());
+  ctx->base_fetch->response_headers()->ComputeCaching();
 
   driver->SetUserAgent(ctx->user_agent->c_str());
   driver->SetRequestHeaders(*request_headers);
+  // driver->set_pagespeed_query_params(pagespeed_query_params);
+  // driver->set_pagespeed_option_cookies(pagespeed_option_cookies);
 
   bool page_callback_added = false;
   scoped_ptr<ProxyFetchPropertyCallbackCollector> property_callback(ProxyFetchFactory::InitiatePropertyCacheLookup(
@@ -787,12 +830,11 @@ handle_read_request_header(TSHttpTxn txnp)
           // TODO(oschaaf): fix host/ip(?)
           SystemRequestContext *system_request_context = new SystemRequestContext(
             server_context->thread_system()->NewMutex(), server_context->timer(), "www.foo.com", 80, "127.0.0.1");
+          RequestContextPtr rptr(system_request_context);
 
-          ctx->base_fetch = new AtsBaseFetch(server_context, RequestContextPtr(system_request_context), ctx->downstream_vio,
-                                             ctx->downstream_buffer, false);
+          ctx->base_fetch = new AtsBaseFetch(server_context, rptr, ctx->downstream_vio, ctx->downstream_buffer, false);
 
 
-          RewriteOptions *options = NULL;
           RequestHeaders *request_headers = new RequestHeaders();
           ctx->base_fetch->SetRequestHeadersTakingOwnership(request_headers);
           copy_request_headers_to_psol(reqp, hdr_loc, request_headers);
@@ -802,26 +844,36 @@ handle_read_request_header(TSHttpTxn txnp)
           // ctx->base_fetch->response_headers()->set_status_code(status);
           // copy_response_headers_to_psol(bufp, hdr_loc, ctx->base_fetch->response_headers());
           // ctx->base_fetch->response_headers()->ComputeCaching();
-          const char *host = ctx->gurl->HostAndPort().as_string().c_str();
+          std::string host = ctx->gurl->HostAndPort().as_string();
           // request_headers->Lookup1(HttpAttributes::kHost);
-          if (host != NULL && strlen(host) > 0) {
-            ctx->options = get_host_options(host);
+          RewriteOptions *options = NULL;
+          if (host.size() > 0) {
+            options = get_host_options(host.c_str(), server_context);
           }
-          bool ok = ps_determine_options(server_context, ctx->options, request_headers, ctx->base_fetch->response_headers(),
-                                         &options, ctx->gurl);
+          if (options == NULL) {
+            options = server_context->global_options()->Clone();
+          }
+
 
+          // GoogleString pagespeed_query_params;
+          // GoogleString pagespeed_option_cookies;
+          // bool ok = ps_determine_options(server_context,
+          //                               ctx->base_fetch->request_headers(),
+          //                               NULL /*ResponseHeaders* */,
+          //                               &options,
+          //                               rptr,
+          //                              ctx->gurl,
+          //                               &pagespeed_query_params,
+          //                               &pagespeed_option_cookies,
+          //                               false /*html rewrite*/);
           // Take ownership of custom_options.
           scoped_ptr<RewriteOptions> custom_options(options);
 
-          if (!ok) {
-            TSError("Failure while determining request options for psol");
-            options = server_context->global_options();
-          } else {
-            // ps_determine_options modified url, removing any ModPagespeedFoo=Bar query
-            // parameters.  Keep url_string in sync with url.
-            ctx->gurl->Spec().CopyToString(ctx->url_string);
-          }
+          // ps_determine_options modified url, removing any ModPagespeedFoo=Bar query
+          // parameters.  Keep url_string in sync with url.
+          // ctx->gurl->Spec().CopyToString(ctx->url_string);
 
+          rptr->set_options(options->ComputeHttpOptions());
           if (options->in_place_rewriting_enabled() && options->enabled() && options->IsAllowed(ctx->gurl->Spec())) {
             RewriteDriver *driver;
             if (custom_options.get() == NULL) {
@@ -834,6 +886,8 @@ handle_read_request_header(TSHttpTxn txnp)
               driver->SetUserAgent(ctx->user_agent->c_str());
             }
             driver->SetRequestHeaders(*ctx->base_fetch->request_headers());
+            // driver->set_pagespeed_query_params(pagespeed_query_params);
+            // driver->set_pagespeed_option_cookies(pagespeed_option_cookies);
             ctx->driver = driver;
             ctx->server_context->message_handler()->Message(kInfo, "Trying to serve rewritten resource in-place: %s",
                                                             ctx->url_string->c_str());
@@ -841,6 +895,7 @@ handle_read_request_header(TSHttpTxn txnp)
             ctx->in_place = true;
             ctx->base_fetch->set_handle_error(false);
             ctx->base_fetch->set_is_ipro(true);
+
             // ctx->driver->FetchInPlaceResource(
             //    *ctx->gurl, false /* proxy_mode */, ctx->base_fetch);
           }
@@ -1036,14 +1091,15 @@ transform_plugin(TSCont contp, TSEvent event, void *edata)
       // (or at least a note that it cannot be cached stored there).
       // We do that using an Apache output filter.
       // TODO(oschaaf): fix host/ip(?)
-      SystemRequestContext *system_request_context = new SystemRequestContext(
-        ctx->server_context->thread_system()->NewMutex(), ctx->server_context->timer(), "www.foo.com", 80, "127.0.0.1");
-
-      ctx->recorder = new InPlaceResourceRecorder(
-        RequestContextPtr(system_request_context), cache_url, ctx->driver->CacheFragment(), request_headers.GetProperties(),
-        options->respect_vary(), options->ipro_max_response_bytes(), options->ipro_max_concurrent_recordings(),
-        options->implicit_cache_ttl_ms(), ctx->server_context->http_cache(), ctx->server_context->statistics(),
-        ctx->server_context->message_handler());
+      RequestContextPtr system_request_context(new SystemRequestContext(
+        ctx->server_context->thread_system()->NewMutex(), ctx->server_context->timer(), "www.foo.com", 80, "127.0.0.1"));
+
+      system_request_context->set_options(options->ComputeHttpOptions());
+
+      ctx->recorder = new InPlaceResourceRecorder(system_request_context, cache_url, ctx->driver->CacheFragment(),
+                                                  request_headers.GetProperties(), options->ipro_max_response_bytes(),
+                                                  options->ipro_max_concurrent_recordings(), ctx->server_context->http_cache(),
+                                                  ctx->server_context->statistics(), ctx->server_context->message_handler());
       // TODO(oschaaf): does this make sense for ats? perhaps we don't need it.
       ctx->ipro_response_headers = new ResponseHeaders();
       ctx->ipro_response_headers->set_status_code(status);

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/70a6c94d/plugins/experimental/ats_pagespeed/ats_pagespeed.h
----------------------------------------------------------------------
diff --git a/plugins/experimental/ats_pagespeed/ats_pagespeed.h b/plugins/experimental/ats_pagespeed/ats_pagespeed.h
index ffdafd0..49906d5 100644
--- a/plugins/experimental/ats_pagespeed/ats_pagespeed.h
+++ b/plugins/experimental/ats_pagespeed/ats_pagespeed.h
@@ -32,6 +32,8 @@
 #include "net/instaweb/util/public/string.h"
 #include "net/instaweb/util/public/string_util.h"
 
+#include "net/instaweb/http/public/request_context.h"
+
 namespace net_instaweb
 {
 class AtsBaseFetch;
@@ -48,11 +50,7 @@ class ServerContext;
 
 } // namespace net_instaweb
 
-enum transform_state {
-  transform_state_initialized,
-  transform_state_output,
-  transform_state_finished,
-};
+enum transform_state { transform_state_initialized, transform_state_output, transform_state_finished };
 
 typedef struct {
   TSHttpTxn txn;
@@ -94,15 +92,13 @@ TransformCtx *get_transaction_context(TSHttpTxn txnp);
 void ats_ctx_destroy(TransformCtx *ctx);
 bool cache_hit(TSHttpTxn txnp);
 
-bool ps_determine_options(net_instaweb::ServerContext *server_context,
-                          // Directory-specific options, usually null.  They've already been rebased off
-                          // of the global options as part of the configuration process.
-                          net_instaweb::RewriteOptions *directory_options, net_instaweb::RequestHeaders *request_headers,
+bool ps_determine_options(net_instaweb::ServerContext *server_context, net_instaweb::RequestHeaders *request_headers,
                           net_instaweb::ResponseHeaders *response_headers, net_instaweb::RewriteOptions **options,
-                          net_instaweb::GoogleUrl *url);
+                          net_instaweb::RequestContextPtr request_context, net_instaweb::GoogleUrl *url,
+                          GoogleString *pagespeed_query_params, GoogleString *pagespeed_option_cookies, bool html_rewrite);
 
 void copy_request_headers_to_psol(TSMBuffer bufp, TSMLoc hdr_loc, net_instaweb::RequestHeaders *psol_headers);
 // You will own options returned by this:
-net_instaweb::AtsRewriteOptions *get_host_options(const StringPiece &host);
+net_instaweb::AtsRewriteOptions *get_host_options(const StringPiece &host, net_instaweb::ServerContext *server_context);
 
 #endif /* ATS_PAGESPEED_H_ */

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/70a6c94d/plugins/experimental/ats_pagespeed/ats_process_context.cc
----------------------------------------------------------------------
diff --git a/plugins/experimental/ats_pagespeed/ats_process_context.cc b/plugins/experimental/ats_pagespeed/ats_process_context.cc
index ea0d3b7..1efd6d2 100644
--- a/plugins/experimental/ats_pagespeed/ats_process_context.cc
+++ b/plugins/experimental/ats_pagespeed/ats_process_context.cc
@@ -40,6 +40,7 @@ AtsProcessContext::AtsProcessContext() : ProcessContext()
   AtsThreadSystem *ts = new AtsThreadSystem();
   message_handler_.reset(new AtsMessageHandler(ts->NewMutex()));
   driver_factory_.reset(new AtsRewriteDriverFactory(*this, ts, "" /*hostname, not used*/, -1 /*port, not used*/));
+  driver_factory_->Init();
   server_context_ = driver_factory()->MakeAtsServerContext();
 
   AtsRewriteOptions *root_options_ = (AtsRewriteOptions *)driver_factory_->default_options();

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/70a6c94d/plugins/experimental/ats_pagespeed/ats_resource_intercept.cc
----------------------------------------------------------------------
diff --git a/plugins/experimental/ats_pagespeed/ats_resource_intercept.cc b/plugins/experimental/ats_pagespeed/ats_resource_intercept.cc
index f6c7260..15b66e3 100644
--- a/plugins/experimental/ats_pagespeed/ats_resource_intercept.cc
+++ b/plugins/experimental/ats_pagespeed/ats_resource_intercept.cc
@@ -120,40 +120,49 @@ resource_intercept(TSCont cont, TSEvent event, void *edata)
       AtsServerContext *server_context = intercept_ctx->request_ctx->server_context;
 
       // TODO:(oschaaf) host/port
-      SystemRequestContext *system_request_context =
-        new SystemRequestContext(server_context->thread_system()->NewMutex(), server_context->timer(),
-                                 "www.foo.com", // TODO(oschaaf): compute these
-                                 80, "127.0.0.1");
+      RequestContextPtr system_request_context(new SystemRequestContext(server_context->thread_system()->NewMutex(),
+                                                                        server_context->timer(),
+                                                                        "www.foo.com", // TODO(oschaaf): compute these
+                                                                        80, "127.0.0.1"));
 
-      intercept_ctx->request_ctx->base_fetch = new AtsBaseFetch(server_context, RequestContextPtr(system_request_context),
-                                                                downstream_vio, intercept_ctx->resp_buffer, true);
+      intercept_ctx->request_ctx->base_fetch =
+        new AtsBaseFetch(server_context, system_request_context, downstream_vio, intercept_ctx->resp_buffer, true);
       intercept_ctx->request_ctx->base_fetch->set_request_headers(intercept_ctx->request_headers);
 
+      std::string host = intercept_ctx->request_ctx->gurl->HostAndPort().as_string();
       RewriteOptions *options = NULL;
-
-      // const char* host = intercept_ctx->request_headers->Lookup1(HttpAttributes::kHost);
-      const char *host = intercept_ctx->request_ctx->gurl->HostAndPort().as_string().c_str();
-      if (host != NULL && strlen(host) > 0) {
-        intercept_ctx->request_ctx->options = get_host_options(host);
+      if (host.size() > 0) {
+        options = get_host_options(host.c_str(), server_context);
+      }
+      if (options == NULL) {
+        options = server_context->global_options()->Clone();
       }
 
-      // TODO(oschaaf): directory options should be coming from configuration!
-      bool ok = ps_determine_options(
-        server_context, intercept_ctx->request_ctx->options, intercept_ctx->request_ctx->base_fetch->request_headers(),
-        intercept_ctx->request_ctx->base_fetch->response_headers(), &options, intercept_ctx->request_ctx->gurl);
-
-      // Take ownership of custom_options.
-      scoped_ptr<RewriteOptions> custom_options(options);
 
+      /*        GoogleString pagespeed_query_params;
+      GoogleString pagespeed_option_cookies;
+      bool ok = ps_determine_options(server_context,
+                                     intercept_ctx->request_ctx->base_fetch->request_headers(),
+                                     NULL //intercept_ctx->request_ctx->base_fetch->response_headers()//,
+                                     &options,
+                                     system_request_context,
+                                     intercept_ctx->request_ctx->gurl,
+                                     &pagespeed_query_params,
+                                     &pagespeed_option_cookies,
+                                     false );
       if (!ok) {
         TSError("Failure while determining request options for psol resource");
-        // options = server_context->global_options();
-      } else {
-        // ps_determine_options modified url, removing any ModPagespeedFoo=Bar query
-        // parameters.  Keep url_string in sync with url.
-        // TODO(oschaaf): we really should determine if we have to do the lookup
-        intercept_ctx->request_ctx->gurl->Spec().CopyToString(intercept_ctx->request_ctx->url_string);
+        options = server_context->global_options()->Clone();
+      } else if (options == NULL) {
+        options = server_context->global_options()->Clone();
       }
+    */
+      scoped_ptr<RewriteOptions> custom_options(options);
+
+
+      // TODO(oschaaf): directory options should be coming from configuration!
+      // TODO(oschaaf): do we need to sync the url?
+      system_request_context->set_options(options->ComputeHttpOptions());
 
       // The url we have here is already checked for IsWebValid()
       net_instaweb::ResourceFetch::Start(GoogleUrl(*intercept_ctx->request_ctx->url_string),
@@ -233,7 +242,7 @@ read_cache_header_callback(TSCont cont, TSEvent event, void *edata)
   // This is because I realised too late that the intercepts
   // are able to outlive the transaction, which I hacked
   // to work.
-  if (TSHttpTxnIsInternal(txn) == TS_SUCCESS) {
+  if (TSHttpIsInternalRequest(txn) == TS_SUCCESS) {
     ats_ctx_destroy(ctx);
     TSHttpTxnReenable(txn, TS_EVENT_HTTP_CONTINUE);
     return 0;

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/70a6c94d/plugins/experimental/ats_pagespeed/gzip/misc.h
----------------------------------------------------------------------
diff --git a/plugins/experimental/ats_pagespeed/gzip/misc.h b/plugins/experimental/ats_pagespeed/gzip/misc.h
index 52e7477..f3d49d4 100644
--- a/plugins/experimental/ats_pagespeed/gzip/misc.h
+++ b/plugins/experimental/ats_pagespeed/gzip/misc.h
@@ -48,11 +48,7 @@ static const int DICT_ENTRY_MAX = 2048;
 // to make it work, the name must be different then downstream proxies though
 // otherwise the downstream will restore the accept encoding header
 
-enum transform_state {
-  transform_state_initialized,
-  transform_state_output,
-  transform_state_finished,
-};
+enum transform_state { transform_state_initialized, transform_state_output, transform_state_finished };
 
 typedef struct {
   TSHttpTxn txn;