~simonkberg/ngx-pagespeed/release-1.9.32.3-beta

« back to all changes in this revision

Viewing changes to src/ngx_url_async_fetcher.h

  • Committer: Jeffrey Crowell
  • Author(s): Otto van der Schaaf
  • Date: 2014-10-24 20:23:45 UTC
  • Revision ID: git-v1:ab9929e5a5c631353a7eac4c49543aa8756d5e7a
native fetcher: Support http keep-alive

Based on @dinic his work, add keep-alive support for the native fetcher.
Adds a new option, usable at the http{} level in configuration:

pagespeed NativeFetcherMaxKeepaliveRequests 50;

The default value is 100 (aligned to nginx). Setting the value to 1 turns off
keep-alive requests altogether).

Most notable changes:
- Request keep-alive by adding the appropriate request header
- Fixes connections getting reused while they are servicing other requests:
- Remove connection from the pool of available connections for keepalive when applicable
- Disable keepalive in more appropriate situations
- Response parsing fixes
- Remove connections that timeout from the k.a. pool
- Add a few sanity (D)CHECKS
- Emit debug messages for traceability
- Fix for ignoring ipv6 addresses returned from dns queries when ipv6 is enabled.
- Bump the fetch timeout in test configuration to deflake tests that require dns
  lookups (which will be done via 8.8.8.8 currently for the native fetcher)

Conflicts:
        src/ngx_fetch.cc

Show diffs side-by-side

added added

removed removed

Lines of Context:
53
53
  NgxUrlAsyncFetcher(
54
54
      const char* proxy, ngx_log_t* log, ngx_msec_t resolver_timeout,
55
55
      ngx_msec_t fetch_timeout, ngx_resolver_t* resolver,
56
 
      ThreadSystem* thread_system, MessageHandler* handler);
 
56
      int max_keepalive_requests, ThreadSystem* thread_system,
 
57
      MessageHandler* handler);
57
58
 
58
59
  ~NgxUrlAsyncFetcher();
59
60
 
139
140
  ngx_connection_t* command_connection_;  // the command pipe
140
141
  int pipe_fd_;  // the write pipe end
141
142
  ngx_resolver_t* resolver_;
 
143
  int max_keepalive_requests_;
142
144
  ngx_msec_t resolver_timeout_;
143
145
  ngx_msec_t fetch_timeout_;
144
146