Changeset 57249 in webkit


Ignore:
Timestamp:
Apr 7, 2010 10:00:16 PM (14 years ago)
Author:
abarth@webkit.org
Message:

2010-04-07 Eric Seidel <eric@webkit.org>

Reviewed by Adam Barth.

WebKit Apache configs only listen on IPv4 addresses, causing random timeouts
https://bugs.webkit.org/show_bug.cgi?id=37104

WebKit Apache configs were only listening on IPv4 loopback (127.0.0.1), however
the system will resolve "localhost." to both IPv4 and IPv6 (::1) loopback
addreses when IPv6 is enabled. Since DNS lookup returns addresses in random
order, we would occasionally fail to make connections to "localhost" addresses
if the various network re-tries all happen to resolve to the IPv6 loopback.

To make matters worse, the kernel has a connection reset throttle which we
could trigger if we would repeatedly attempt to connect to ::1 and fail.
The trottle would cause a 1 or 2 second delay on the connection, sometimes
causing slow tests to time out.

I also discovered during this investigation that we have some partial support
for specifying our apache port numbers at runtime. The support is already incomplete
by not accounting for WebSockets or SSL ports. This fix will make our partial
support for dynamic apache port numbers even more broken.

I've added Listen [::1]:PORT directives for 8000, 8080, and 8443 to all
platforms (except cygwin which does not have the 8443 directive to begin with).

  • http/conf/apache2-debian-httpd.conf:
  • http/conf/apache2-httpd.conf:
  • http/conf/cygwin-httpd.conf:
  • http/conf/fedora-httpd.conf:
  • http/conf/httpd.conf:

2010-04-07 Eric Seidel <eric@webkit.org>

Reviewed by Adam Barth.

WebKit Apache configs only listen on IPv4 addresses, causing random timeouts
https://bugs.webkit.org/show_bug.cgi?id=37104

Add warnings that the partial support for specifying what port numbers
apache should bind to is even more broken after this fix.

  • Scripts/run-webkit-httpd:
  • Scripts/run-webkit-tests:
Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r57242 r57249  
     12010-04-07  Eric Seidel  <eric@webkit.org>
     2
     3        Reviewed by Adam Barth.
     4
     5        WebKit Apache configs only listen on IPv4 addresses, causing random timeouts
     6        https://bugs.webkit.org/show_bug.cgi?id=37104
     7
     8        WebKit Apache configs were only listening on IPv4 loopback (127.0.0.1), however
     9        the system will resolve "localhost." to both IPv4 and IPv6 (::1) loopback
     10        addreses when IPv6 is enabled.  Since DNS lookup returns addresses in random
     11        order, we would occasionally fail to make connections to "localhost" addresses
     12        if the various network re-tries all happen to resolve to the IPv6 loopback.
     13
     14        To make matters worse, the kernel has a connection reset throttle which we
     15        could trigger if we would repeatedly attempt to connect to ::1 and fail.
     16        The trottle would cause a 1 or 2 second delay on the connection, sometimes
     17        causing slow tests to time out.
     18
     19        I also discovered during this investigation that we have some partial support
     20        for specifying our apache port numbers at runtime.  The support is already incomplete
     21        by not accounting for WebSockets or SSL ports.  This fix will make our partial
     22        support for dynamic apache port numbers even more broken.
     23
     24        I've added Listen [::1]:PORT directives for 8000, 8080, and 8443 to all
     25        platforms (except cygwin which does not have the 8443 directive to begin with).
     26
     27        * http/conf/apache2-debian-httpd.conf:
     28        * http/conf/apache2-httpd.conf:
     29        * http/conf/cygwin-httpd.conf:
     30        * http/conf/fedora-httpd.conf:
     31        * http/conf/httpd.conf:
     32
    1332010-04-07  Ojan Vafai  <ojan@chromium.org>
    234
  • trunk/LayoutTests/http/conf/apache2-debian-httpd.conf

    r55663 r57249  
    164164Listen 127.0.0.1:8080
    165165Listen 127.0.0.1:8443
     166# We listen to both IPv4 and IPv6 loop-back addresses, but ignore
     167# requests to 8000 from random users on network.
     168# See https://bugs.webkit.org/show_bug.cgi?id=37104
     169Listen [::1]:8000
     170Listen [::1]:8080
     171Listen [::1]:8443
    166172
    167173#
  • trunk/LayoutTests/http/conf/apache2-httpd.conf

    r47389 r57249  
    164164Listen 127.0.0.1:8080
    165165Listen 127.0.0.1:8443
     166# We listen to both IPv4 and IPv6 loop-back addresses, but ignore
     167# requests to 8000 from random users on network.
     168# See https://bugs.webkit.org/show_bug.cgi?id=37104
     169Listen [::1]:8000
     170Listen [::1]:8080
     171Listen [::1]:8443
    166172
    167173#
  • trunk/LayoutTests/http/conf/cygwin-httpd.conf

    r39186 r57249  
    180180#Listen 3000
    181181Listen 127.0.0.1:8080
     182# We listen to both IPv4 and IPv6 loop-back addresses, but ignore
     183# requests to 8000 from random users on network.
     184# See https://bugs.webkit.org/show_bug.cgi?id=37104
     185Listen [::1]:8000
     186Listen [::1]:8080
    182187
    183188#
  • trunk/LayoutTests/http/conf/fedora-httpd.conf

    r50050 r57249  
    139139Listen 127.0.0.1:8080
    140140Listen 127.0.0.1:8443
     141# We listen to both IPv4 and IPv6 loop-back addresses, but ignore
     142# requests to 8000 from random users on network.
     143# See https://bugs.webkit.org/show_bug.cgi?id=37104
     144Listen [::1]:8000
     145Listen [::1]:8080
     146Listen [::1]:8443
    141147
    142148#
  • trunk/LayoutTests/http/conf/httpd.conf

    r39186 r57249  
    182182Listen 127.0.0.1:8080
    183183Listen 127.0.0.1:8443
     184# We listen to both IPv4 and IPv6 loop-back addresses, but ignore
     185# requests to 8000 from random users on network.
     186# See https://bugs.webkit.org/show_bug.cgi?id=37104
     187Listen [::1]:8000
     188Listen [::1]:8080
     189Listen [::1]:8443
    184190
    185191#
  • trunk/WebKitTools/ChangeLog

    r57247 r57249  
     12010-04-07  Eric Seidel  <eric@webkit.org>
     2
     3        Reviewed by Adam Barth.
     4
     5        WebKit Apache configs only listen on IPv4 addresses, causing random timeouts
     6        https://bugs.webkit.org/show_bug.cgi?id=37104
     7
     8        Add warnings that the partial support for specifying what port numbers
     9        apache should bind to is even more broken after this fix.
     10
     11        * Scripts/run-webkit-httpd:
     12        * Scripts/run-webkit-tests:
     13
    1142010-04-07  Shinichiro Hamaji  <hamaji@chromium.org>
    215
  • trunk/WebKitTools/Scripts/run-webkit-httpd

    r54314 r57249  
    4343use webkitdirs;
    4444
     45# FIXME: Dynamic HTTP-port configuration in this file is wrong.  The various
     46# apache config files in LayoutTests/http/config govern the port numbers.
     47# Dynamic configuration as-written will also cause random failures in
     48# an IPv6 environment.  See https://bugs.webkit.org/show_bug.cgi?id=37104.
    4549# Argument handling
    4650my $httpdPort = 8000;
  • trunk/WebKitTools/Scripts/run-webkit-tests

    r56994 r57249  
    120120my $generateNewResults = isAppleMacWebKit() ? 1 : 0;
    121121my $guardMalloc = '';
     122# FIXME: Dynamic HTTP-port configuration in this file is wrong.  The various
     123# apache config files in LayoutTests/http/config govern the port numbers.
     124# Dynamic configuration as-written will also cause random failures in
     125# an IPv6 environment.  See https://bugs.webkit.org/show_bug.cgi?id=37104.
    122126my $httpdPort = 8000;
    123127my $httpdSSLPort = 8443;
Note: See TracChangeset for help on using the changeset viewer.