Make a fortune quietly
Go to file
klzgrad 8816b85142 h2: Add support for HTTP/2 CONNECT Fast Open
SpdyProxyClientSocket waits for 200 OK before returning OK for Connect.

Change that behavior to returning OK immediately after CONNECT header.

This feature is enabled by default. It should probably be turned on
through an interface but that implies passing a flag through deep
interface chains right now requiring intrusive changes to multiple
places.

Design notes:

The current approach is better than the obvious TCP Fast Open style fake
Connect().

Fast Open should not be used for preconnects as preconnects need actual
connections set up. The Naive client does not use preconnects per se
(using "...RawConnect") but the user agent will use preconnects and the
Naive client has to infer that. Hence there is a need to check the
incoming socket for available bytes right before Connect() and configure
whether a socket should be connected with Fast Open. But fake Connect()
make it difficult to check the incoming socket because it immediately
returns and there is not enough time for the first read of the incoming
socket to arrive.

To check for preconnects it is best to push the first read of the
incoming socket to as late as possible. The other (wrong) way of doing
that is to pass in an early read callback and call it immediately after
sending HEADERS and then send the available bytes right there. This way
is wrong because it does not work with late binding, which assumes
Connect() is idempotent and causes sockets opened in this way to be
potentially bound to the wrong socket requests.

The current approach is to return OK in Connect() right after sending
HEADERS before getting the reply, which is to be received later. If the
reply is received during a subsequent Read() and the reply indicates an
error, the error is returned to the callback of the Read(); otherwise
the error is ignored with the connection disconnected and subsequent
Read() and Write() should discover the disconnection.
2018-08-11 05:36:18 +00:00
android_webview Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
apps Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
ash Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
base build: Trim libevent usage 2018-08-11 05:36:17 +00:00
build build: Move exclude_unwind_tables back into declare_args 2018-08-11 05:36:17 +00:00
build_overrides Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
buildtools Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
cc Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
chrome build: Don't include gtk on ozone in //chrome/test 2018-08-11 05:36:16 +00:00
chrome_elf Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
chromecast Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
chromeos Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
cloud_print Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
components Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
content Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
courgette Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
crypto Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
dbus Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
device Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
extensions Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
gin Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
google_apis Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
google_update Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
gpu Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
headless Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
ios Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
ipc Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
jingle Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
mash Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
media Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
mojo Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
native_client Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
native_client_sdk/src Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
net h2: Add support for HTTP/2 CONNECT Fast Open 2018-08-11 05:36:18 +00:00
pdf Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
ppapi Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
printing Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
remoting Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
rlz Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
sandbox Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
services Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
skia Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
sql Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
storage Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
testing Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
third_party Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
tools build: Trim libevent usage 2018-08-11 05:36:17 +00:00
ui Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
url build: Remove icu 2018-08-11 05:36:17 +00:00
v8 Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
webrunner Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
.clang-format Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
.gitattributes Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
.gn Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
AUTHORS Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
BUILD.gn Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
LICENSE Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00
LICENSE.chromium_os Import chromium-68.0.3440.106 2018-08-11 05:35:24 +00:00