| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
BUG=488550
TBR=mmenke@chromium.org
Review URL: https://codereview.chromium.org/1535363003 .
Cr-Commit-Position: refs/heads/master@{#366297}
|
|
|
|
|
|
|
|
|
|
| |
find ./net/quic/ \( -iname \*.h -o -iname \*.cc \) -exec clang-format -i --style="{BasedOnStyle: Chromium, Standard: Cpp11}" {} \;
BUG=
Review URL: https://codereview.chromium.org/1535113003
Cr-Commit-Position: refs/heads/master@{#366144}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
does not change yet).
The path_id in these two frames are needed to write multipath sent/received packet managers.
Merge internal change: 109409136
https://codereview.chromium.org/1521663002/
change the public construtor of QuicStreamFrame to not take const char*. Prevent crash on windows due to undeterministic argument evaluation order.
Merge internal change: 109333756
https://codereview.chromium.org/1515253002/
If a QUIC client sends an STK but no SCID, use the primary config to attempt to validate it. Protected by FLAGS_quic_validate_stk_without_scid
Re-landing cl/109238062 (plus flag protection) which was rolled back.
Merge internal change: 109330357
https://codereview.chromium.org/1519893002/
Make QuicPacketGenerator and QuicPacketCreator path-aware (not in use currently).
QuicPacketGenerator:
Add function SetCurrentPath.
QuicPacketCreator:
Add function SetCurrentPath.
Add current_path_ and multipath_packet_number_.
Merge internal change: 109319437
https://codereview.chromium.org/1512763014/
Pull out the QUIC trailing header key ":final-offset" into a string constant. No behavior change.
Merge internal change: 109296307
https://codereview.chromium.org/1518873003/
Add an end-to-end test to reproduce the QUIC TOO_MANY_REJECTS problem.
Merge internal change: 109246210
https://codereview.chromium.org/1518993002/
QUIC inchoate CHLOs may now include an SCID.
Merge internal change: 109238070
https://codereview.chromium.org/1514303002/
Change the memset in QuicWriteBlockList's constructor to be safer. No functional change.
Suggested in https://codereview.chromium.org/1470713003/diff/100001/net/quic/quic_write_blocked_list.cc
Merge internal change: 109233513
https://codereview.chromium.org/1520613005/
Add a new set_chlo_multiplier() method to QuicCryptoServerConfig to change the amount of amplification attack protection is required. Only called in tests.
Merge internal change: 109228560
https://codereview.chromium.org/1513253004/
Refine QuicSession::HasOpenDynamicStreams() to use comparison. No behavior change.
Replace implicit int to bool conversion with comparison operation in QuicSession.
Merge internal change: 109226224
https://codereview.chromium.org/1519623003/
Add new methods to allow QuicServerSession to initiate a stream.
n/a(new unused method in QuicServerSession to prepare for Quic Server Push)
Merge internal change: 109209620
https://codereview.chromium.org/1517113002/
add 3 new fields in QuicSession which count incoming streams and are used in condition check while creating a new stream. Protected by FLAGS_quic_distinguish_incoming_outgoing_streams, on by default.
The three variables are:
num_dynamic_incoming_streams_;
num_draining_incoming_streams_;
num_locally_closed_incoming_streams_highest_offset_;
Merge internal change: 109194594
https://codereview.chromium.org/1504333011/
Add a test for receiving Headers, Body+FIN, Trailers in QuicSpdyStream.
n/a (test only)
Merge internal change: 109194547
https://codereview.chromium.org/1519463003/
Add HTTP/2 Trailers support to QuicSpdy{Server,Client}Stream. Protected behind existing FLAGS_quic_supports_trailers.
Merge internal change: 109193759
https://codereview.chromium.org/1518653002/
Add an unused WriteTrailers method to QuicSpdyStream. Protected behind existing FLAGS_quic_supports_trailers
Merge internal change: 109188553
https://codereview.chromium.org/1508853012/
QuicSpdyStream::FinishedReadingTrailers now checks for received FIN as secondary indication that trailers have been read. Protected behind existing FLAGS_quic_supports_trailers
Merge internal change: 109187066
https://codereview.chromium.org/1519453002/
Remove kStartOfHashData and QuicData::BeforePlaintext. No functional change.
Merge internal change: 109151090
https://codereview.chromium.org/1514473006/
Add a new QUIC common cert set to reflect the new GIA cert.
Merge internal change: 109136151
https://codereview.chromium.org/1510223005/
Increase the multiplier of the CHLO message size that a REJ message must stay under when the client doesn't present a valid source-address token from 2 to 3.
Merge internal change: 109122060
https://codereview.chromium.org/1513993002/
QUIC: Always use primary config when getting proof
When calling ProofSource::GetProof, always use the primary config. Since
the QuicCryptoServerConfig's primary config could change partway through
processing the handshake, this also stores the primary config's SCID in
the state maintained by QuicCryptoServerStream.
fix QUIC_PROOF_INVALID bug in QUIC_VERSION_26, gated by
FLAGS_quic_use_primary_config_for_proof
Merge internal change: 109113945
https://codereview.chromium.org/1513193002/
Change a bunch of log messages from DLOG(INFO) to DVLOG(1), capitalize messages, and make their output consistent with variable names.
n/a (DLOG only)
Merge internal change: 109113290
https://codereview.chromium.org/1508393003/
Deleting DLOG message in QuicStreamSequencer. I don't think it's useful - the flag will go away soon and will always use this - and more importantly it access the id() field of the incomplete ReliableQuicStream. This constructor is called during initialization of ReliableQuicStream, and before the id_ field in ReliableQuicStream is initialized.
n/a (deleting DLOG)
Merge internal change: 109113068
https://codereview.chromium.org/1513163002/
Add ack_frame_updated_ to ReceivePacketManager (not in use currently).
Merge internal change: 109108430
https://codereview.chromium.org/1515743003/
Add has_ack and has_stop_waiting to QuicPacketCreator and remove them from QuicPacketGenerator. No functional change.
Merge internal change: 109007771
https://codereview.chromium.org/1512123004/
n/a (delete unused variable in test)
Merge internal change: 108972933
https://codereview.chromium.org/1515703004/
QuicSpdyStream supports receiving trailing headers frames. Flag protected by FLAGS_quic_support_trailers
This is not expected to cause changes in production, as no client should
be sending Trailers. That said, this is being flag protected as it does
potentially change behavior, and the FLAG is intended to cover further CLs as
Trailers support is fleshed out.
Merge internal change: 108972403
https://codereview.chromium.org/1518483003/
R=rch@chromium.org
BUG=
Review URL: https://codereview.chromium.org/1515353002
Cr-Commit-Position: refs/heads/master@{#364987}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
According to comment in base/port.h, in Chromium, we force-define
__STDC_CONSTANT_MACROS, so we can just use the regular (U)INTn_C
macros from <stdint.h>.
BUG=138542
TEST=net_unittests
R=mattm@chromium.org
Review URL: https://codereview.chromium.org/1160203003
Cr-Commit-Position: refs/heads/master@{#332695}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce new QUIC tag for stateless rejects.
Merge internal change: 91210526
https://codereview.chromium.org/1097573003/
Add the option to estimate bandwidth by using the max of the recent samples rather than the average. Default to true in prod.
Full implementation of make-tcp-fast's windowed max over 8 RTTs to come later.
Merge internal change: 90885261
https://codereview.chromium.org/1091913002/
Temporarily fix a flaky QUIC EndToEndTest until b/19572432 is fixed.
Merge internal change: 90710547
https://codereview.chromium.org/1084403006/
Remove extraneous FEC interface from QuicFramer. No functional change.
Merge internal change: 90653152
https://codereview.chromium.org/1092783004/
Create a new TCP cubic mode with a min CWND of 4 packets, but with a pacing rate as low as 1 packet per RTT.
Merge internal change: 90646967
https://codereview.chromium.org/1097553004/
Remove common cert set 0 from QUIC.
Common cert set 0 was generated 2 years ago (or so) at the inception
of the QUIC project. The version of the GIA cert which it contains is
expired, so the set essentially server no purpose. Common cert set 1
was generated back in July and contains a current version of GIA.
Merge internal change: 90426581
https://codereview.chromium.org/1092843002/
Allow QUIC's LargePostNoPacketLoss test to have some packets lost until b/16460210 is fixed.
Merge internal change: 90417911
https://codereview.chromium.org/1084323004/
Reorganize incoming packet validity checks. Most behavior unchanged, but QUIC connection requests that are flagged for time-wait and also have a not-understood version now get a version negotiation packet.
Add tests to verify the various validity checks have the desired effect.
Merge internal change: 90277728
https://codereview.chromium.org/1090063004/
Stop explicitly setting header fields with their default values.
Pull out packet construction into a ConstructPacket method.
Merge internal change: 90276965
https://codereview.chromium.org/1092833002/
Use C++11 delegate constructors to avoid constructor body duplication.
Merge internal change: 90275058
https://codereview.chromium.org/1090113002/
No need to have a QuicPacketHeader member variable: it's not expensive to build, and building a new one each time ensures it doesn't contain unexpected values.
Merge internal change: 90274866
https://codereview.chromium.org/1065543003/
Augment QUIC_VERSION_25 by removing unused error_details field from QuicRstStreamFrame
The error field is populated, but error_details string is never used.
Merge internal change: 90259315
https://codereview.chromium.org/1091863002/
Stop storing QuicSession's flow controller in a scoped_ptr.
Every session has a flow controller nowadays. We never change or delete it, no
longer needs to be in a scoped_ptr.
Merge internal change: 90250975
https://codereview.chromium.org/1097603002/
Additional tests to verify that a connection is closed when a decryptable packet with damaged payload is processed. Add a debug logging message.
Merge internal change: 90188127
https://codereview.chromium.org/1094743002/
Tidy up some comments in QuicConnection, and remove linebreak in method signature.
https://codereview.chromium.org/1090073002/
Initialize all fields in the default QuicServerId constructor
Fixed QuicServerId constructor to initialize all fields.
Merge internal change: 90180296
https://codereview.chromium.org/1061783004/
Implement QUIC version 25 which supports SPDY/4 style header blocks.
Merge internal change: 90161489
https://codereview.chromium.org/1094733002/
Remove DFATAL on double close of a QUIC connection, silent early return instead. No behavior change.
This DFATAL is a relic from the old days when the code was much simpler and we could easily verify that CloseConnection wasn't being called from multiple places in the current stack. Multiple calls to CloseConnection are not dangerous. Quoting rch: "the code is significantly more complex now and reasoning about where we are in the call stack of other methods which might have also closed the connection seems really daunting."
Merge internal change: 90156411
https://codereview.chromium.org/1096563002/
add a version() convenience method to ReliableQuicStream.
Merge internal change: 89979074
https://codereview.chromium.org/1096493005/
deprecate --FLAGS_quic_small_default_packet_size
Merge internal change: 89899060
https://codereview.chromium.org/1070393003/
Remove QUIC's ack train detection code because it's never used now that pacing is always enabled.
Merge internal change: 89890425
https://codereview.chromium.org/1097533002/
Review URL: https://codereview.chromium.org/1091923002
Cr-Commit-Position: refs/heads/master@{#325772}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a new QUIC common cert set to reflect the new GIA cert.
Also rename the existing common cert set *.inc files.
Merge internal change: 78450265
https://codereview.chromium.org/683343002/
Removes QuicTcpCongestionWindow type and adds a new QuicPacketCount
type.
The CL also moves to using QuicPacketCount instead of
QuicTcpCongestionWindow in TCP congestion control code. Using a
QuicPacketCount type makes it obvious for congestion control
computations that a variable of this type needs to be converted when
comparing with other congestion control variables (such as
|bytes_in_flight|) that are maintained as QuicByteCount. As a type,
QuicTcpCongestionWindow currently doesn't seem to have any other
semantic value.
Merge internal change: 78399967
https://codereview.chromium.org/644853004/
Fix flaky test in QuicSessionTest. Port of
https://codereview.chromium.org/669963003/ to internal source tree.
Merge internal change: 78351892
This CL was already in chromium except for small comment change.
https://codereview.chromium.org/684783006/
Stop sending QUIC SCUP message immediately after handshake.
Merge internal change: 78296626
https://codereview.chromium.org/684983002/
Delete rolled out FLAGS_quic_store_cached_network_params_from_chlo
Merge internal change: 78276864
https://codereview.chromium.org/669663004/
Modifies RTT code to use uncorrected measured rtt for min_rtt and to
only correct for ack_delay when recording smoothed_rtt and when
ack_delay is sane.
Merge internal change: 78269418
https://codereview.chromium.org/685893002/
Flag protect enabling of QUIC's BBR congestion control algorithm.
Merge internal change: 78229291
https://codereview.chromium.org/687643004/
Further simplify QUIC's UnackedPacketMap now that the interface is
unified on AddSentPacket.
Merge internal change: 78219252
https://codereview.chromium.org/685883004/
R=rch@chromium.org,
TBR=mkosiba@chromium.org, mnaganov@chromium.org
Review URL: https://codereview.chromium.org/689483002
Cr-Commit-Position: refs/heads/master@{#301825}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix flakiness with retransmission tracking.
This happens when, due to ACKs for previous transmissions of packets,
none of the unacked packets have retransmittable data any longer. The
retransmission timeout fires, but no packets are transmitted. Assuming
that there is still data to write, this means that the connection hangs.
DOH!
To fix this, after we finish retransmitting all/any packets we should
write any pending data.
Merge internal change: 52384228
de-lint net/quic net/tools/quic.
Merge internal change: 52381288
Rename SentPacket -> OnPacketSent and AbandoningPacket ->
OnPacketAbandoned in QuicCongestionManager, and friends, to be more
consitent with other similar method names.
Merge internal change: 52380847
Change QuicConnectionTest to fire alarms, instead of calling the methods
that we expect the alarms will execute, since this is actually how the
code runs in non-test mode.
Merge internal change: 52379619
When a previous transmission of a packet is acked, inform the caller
that the data in the new packet has been acked.
Merge internal change: 52305769
Fixed minor nit while merging the following internal CL which converted
uses of scoped_array<T> to scoped_ptr<T[]>.
Merge internal change: 52298940
R=rch@chromium.org
Review URL: https://chromiumcodereview.appspot.com/23503088
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@224950 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implemented RTO calculation for TCP sender.
Merge internal change: 49182038
Introduce a different proof-demand type for ECDSA certs.
In cl/48309237, wtc enabled ECDSA certificates for QUIC. However,
Windows XP can't cope with them so we mustn't return ECDSA certs to
those clients.
The value of ECDSA over RSA in QUIC is much less than in TLS because the
server doesn't need to sign every connection. However, they are likely
to be ~192 bytes smaller, which might be useful.
This change disables ECDSA certificates for the <X509> tag and
introduces a new <X59E> tag by which the client can advertise that it
supports ECDSA certificates.
Merge internal change: 49170028
Added whitespace.
Merge internal change: 49130502
QUIC: check that encryption sequence numbers always increase.
Since sequence number reuse is causes the end of the world, check that
it never happens.
This makes me feel more warm and fuzzy.
Merge internal change: 49113162
QUIC: Send larger client hellos when hoping for certificates.
With cl/49050453, larger client hellos can get larger rejection messages.
This change causes the client to send larger client hellos when it's
likely that we'll be getting certificates. In the event that the
certificates fit in the larger space, but not the smaller one, this
saves a round trip.
Merge internal change: 49109243
QUIC: allow larger ClientHellos to get larger certificate chains.
At the moment we hope that the certificate chain compression gets the
certs down to under 400 bytes and then we feel ok about sending them in
a reply to an unverified source address.
But since we're switching to 2K certs that's basically hopeless: the
leaf certificate will have two, uncompressable blobs in it: the public
key and the signature and, for 2K, they are 256 bytes each.
This change allows a client to send a client hello with more padding and
get a larger reply to an unverified source address. What we don't want
is to become a DDoS amplifier so we make the attacker work in order to
get more from us.
Merge internal change: 49050453
QUIC: Update the common certificate set with GIAG2.
This doesn't break the protocol, but it does mean that clients with the
old certificate set won't be able to elide any certificates. But since
Chrome isn't working with QUIC HTTPS yet anyway, that's not a problem.
Merge internal change: 49050091
Modify QuicStreamSequencer::OnStreamFrame to not call ProcessRawData
with zero length data. Fixes http://crbug.com/257041
Merge internal change: 48912969
BUG=257041
Change ReliableQuicStream::OnStreamFrame to simply delegate fin
handling to the QuicStreamSequencer.
Merge internal change: 48900554
Spliting QuicPacketEntropyManager into QuicReceivedEntropyManager and
QuicSentEntropyManager, in preparation for a larger refactor to create
a ReceivedPacketManager.
Merge internal change: 48860732
Add a test to recreate the invalid ack created when an Ack is sent
immediately in response to a received ack, but the incoming ack's
corresponding headers, and hence packet entropy, has not been
processed.
Merge internal change: 48848920
Aggregate ACK and Feedback frames properly.
Existing code tried to pack acks with feedback info, and regulate
transmission of control packets. There was a bug where it sometimes
didn't pack together an ack with a feedback frame (specifically when
we were blocked from sending non-retransmittable data). There was a
second bug wherein a control frame might be prematurely serialized,
when it could *not* be sent immediately. Specifically when the control
frame was the first frame in a packet, and non-retransmittable data
could be sent, the control frame could be errantly added.
We now consistently aggregate ack frames with feedback frames in a
single packet whenever the coalescing won't delay the sending of the
just-in-time calculated frames. We now also avoid adding a control
frame into a packet unless we are sure it can be sent immediately (so
that we don't block or delay future ack and feedback transmission).
The CL includes updates to tests so that they fail with the old code,
but pass with the new code, as well as a bunch of additions to
comments. This CL is based on the Chromium CL 17341005 (which is not
landing until its merge time comes around), and resolves chromium bug
256116.
FIXED=9502307
Merge internal change: 48841932
BUG=256116
Add logging to the QUIC write path.
merge chromium CL: 17518002
Merge internal change: 48811324
Most of the changes were already in chromium except for comment change.
Fix broken test (opt mode) in cl/48802264.
Merge internal change: 48806857
Demote LOG(ERROR) to DLOG(INFO) when a client sends a packet with
unsupported version. This should not be considered an ERROR
server-side, as a client is free to send us whatever they like. We
deal with it by sending a version negotiation packet and all is well.
Updated tests, and added some comments.
Merge internal change: 48802264
Added time_wait_list_manager helper method to QuicDispatcher.
Merge internal change: 48787571
QUIC: encode the cluster in the first four bytes of the orbit value.
In order to try and measure, in Chrome, when we might have saved a round-trip
with a cluster-wide strike-register we need to know when we hit another server
in the same cluster. We could do that by IP address somewhat, but it's a little
complex and there's the /8 vs /5 between core and ....
This change causes the first four bytes of the orbit to include a hash of the
cluster (or ... rack name) so that we can easily track this in Chrome.
Merge internal change: 48784059
Fix a bug in ReliableQuicStream::OnDecompressorAvailable where a
decompression failure would result in an infinite loop.
Merge internal change: 48696905
patch from issue 20054002
Enabling ChannelId for QUIC, and passing the ChannelId header to
google backends if we're using it. Not flag protected as we're not
doing secure-quic in prod yet.
Merge internal change: 48645878
* Removed QuicTag kQuicVersion1
* Replaced this with enum QuicVersion, which currently has
QUIC_VERSION_6 and QUIC_VERSION_7
* End to end tests are run with both versions
* Framer tests are run with both versions
* QuicConnection now takes a QuicVersion parameter
* TimeWaitListManager now stores QuicVersion in the GUID map and sets
the framer version appropriately using this before sending reset
Merge internal change: 48634592
R=rch@chromium.org
Review URL: https://chromiumcodereview.appspot.com/20227003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@213914 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make the FEC group optional by adding a flag to the private headers.
Merge internal change: 46979143
Merging changes from chromium CL - 15385004
Merge internal change: 46949614
Removing debug logging from RecordPacketReceived. Seems redundant to
log both when we actually receive and when we record it.
Merge internal change: 46934210
Logging crypto handshake as a DVLOG rather than DLOG as it hasn't
recently been needed to debug test failures.
Merge internal change: 46932247
Changing the quic test client to simply not return a stream if not connected.
This will hopefully turn server test check-failures into server test
failures.
Merge internal change: 46932163
QUIC: redo server nonces.
Previously, in order to cope with strike-register failures and client
clock-sync issues, the server could issue a server nonce to a client. This
meant that the server had to remember rejected handshakes so that the server
nonce could be matched up. With this change, QUIC servers no longer need to
keep track of rejected handshakes.
Instead of issuing and remembering nonces, a server will now encrypt them and
forget about them. When a server nonce is used to establish freshness for a
connection, it will be stored in a per-GFE strike-register. (This
strike-register is separate from the one used to process client nonces.)
Merge internal change: 46889484
Remove FEC_ENTROPY_FLAG from private flags. Now, FEC packet's entropy
flag contain the xor of entropies of the protected packets.
Merge internal change: 46889094
Limit the number of times we'll fast-retransmit a given packet using taildrop.
Merge internal change: 46754530
Added CommonCertSetsQUIC to anonymous namespace.
QUIC: cleanups round two.
* Make CommonCertSetsQUIC a Singleton to save on every Config having its own
copy.
* Rework server config expiry: previously it caused an error at client hello
send time. Now it will cause an error at REJ processing time but, if the
config expired after we cached it, we will act as if we didn't have a cached
server config.
* Invalidate the server config cache in the event of a client hello sending
failure. This will prevent a bad server config from being cached and poisoning
connection attempts for the lifetime of the cache.
* Fix a bug in the test code which failed to parse hex chunks in debugging
messages correctly. (Thanks to wtc for noticing.)
Merge internal change: 46742937
Merging changes from chromium - CL 15074007
Merge internal change: 46710932
Fix a bug in QuicSession's header compression behavior which could lead
to infinite loops.
Merge internal change: 46694681
Getting 5% our CPU usage back by not calculating SentBandwidth for the
tcp congestion control algorithm.
Added a TODO to improve that function since it's pretty abysmal: the
ToLargerUnits and Subtract overhead alone accounted for 4.5% of the cpu
in initial loadtest runs.
Merge internal change: 46608880
Adding support for truncated guids in QuicFramer.
Merge internal change: 46575819
using our latched write_blocked status to spare us useless system calls.
Merge internal change: 46573462
Fixing some crashing issues in the QUIC loadtest, where if a client ever
disconnects it never recovers, either crashing trying to create a stream
or crashing waiting for a response on a non-existant stream.
I'm not sure if we have the same problem for the http/https simple clients
but we definitely do for QUIC.
Merge internal change: 46562890
Merging changes from chromium - CL 14614006
Merge internal change: 46460427
Merging cleanup changes from chromium CL - 14651009
Merge internal change: 46457093
Fixing a test framework bug for quic: we were munging headers to do
https:// for insecure quic resulting in a 404 in the http-only service
map. Then disalbing the test since we don't advertise secure SPDY on
insecure QUIC.
Merge internal change: 46408400
Move QuicConfig from ssl_global_data to quic_dispatcher.cc. Initialize
using values from QuicConfigProto and use the max_time_before_crypto_handshake
to set the overall connection timeout before crypto handshake finishes.
Merge internal change: 46400649
QUIC: implement ChannelIDs.
We'll need this for HTTPS.
Merge internal change: 46396357
Deleted usage of scoped_ptr_openssl. Added TODO comments for porting
ChannelIDSigner and Verifier.
R=rch@chromium.org
Review URL: https://chromiumcodereview.appspot.com/15937012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@203220 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Stop versioning non crypto parameters by SCFG. This enables the server
to send different values for these parameters for same SCFG.
As a consequence the server sends the negotiated (authoritative) values
of these parameters in SHLO.
Merge internal change: 45655201
QUIC: make several magic values configurable.
This is half a change. The other half needs to alter server and so
I'll put it in a different CL.
This makes four magic values from the server handshake into parameters
of the server config. A future CL will be able to have the server set
them from it's SSL config protobuf.
Merge internal change: 45622443
QUIC: don't request a proof if the client doesn't have a ProofVerifier.
In order to support cert-less operation, this change alters the client
to not request a proof from the server if it doesn't have a
ProofVerifier configured. Without a ProofVerifier, the client will
simply do opportunistic encryption.
Merge internal change: 45614800
* Stop processing if the current packet closed the connection.
* Close the connection if invalid RST packet received (consistent with
current behavior) -- UDP provides simple CRC.
Merge internal change: 45612040
Don't call ConnectionClose on ConnectionCloseFrame if visitor asked to
stop after processing ack frame.
Merge internal change: 45606025
Don't further process revived packet if visitor refuses the packet header.
Merge internal change: 45530388
Fix coding style nits.
Use "*sets" instead of "set" for arguments or variables of the
CommonCertSets type.
Merge internal change: 45523282
Added enum for write packet error.
Handling failed writes due to errors other than EAGAIN/EWOULDBLOCK I
don't know if this happens for us but might as well handle it.
Merge internal change: 45522400
Tear down the connection when there is a decompression error.
Merge internal change: 45521857
Bugfix infinite wait
Merge internal change: 45509285
Replaced number 3 with kSpdyVersion3.
Will work akalin to define and use SpdyMajorVersion enum and use it
everywhere.
This is a partial merge of internal change: 45485205
Removing an obselete TODO
Merge internal change: 45471987
Move QuicConfig out of QuicCryptoStream. The motivation behind this
change is to be able to select different values for QuicConfig
depending upon SNI (after we receive CHLO).
Merge internal change: 45434264
Limiting the number of FEC groups to 2
Merge internal change: 45425759
Closing connection on out of bounds packet.
Merge internal change: 45413532
Miscellaneous cleanup: add 'const', remove unneeded headers, and make
random minor fixes.
Document the CommonCertSets methods better.
Merge internal change: 45380570
Move FindMutualTag from CryptoUtils to QuicUtils. We will also use
this in version negotiation
Merge internal change: 45337156
Replacing CHECK-fails on address migration with graceful shutdown.
Added GetAddressFamily utility method. Added check for IPV4 in
WritePacket method QuicSocketUtils to copy the IPV4 self_address.
Merge internal change: 45306947
QUIC - Negotiate max open streams.
Added QuicClientSessionPeer to access QuicConfig in QuicClientSession.
Merge internal change: 45233402
Allow retransmitting packets that are retransmissions when we get trucated acks.
Merge internal change: 45233252
Reduce connection timeout till crypto handshake is finished to 1min.
Merge internal change: 45232483
R=rch@chromium.org
Review URL: https://chromiumcodereview.appspot.com/15074007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@200519 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QUIC: use QuicTag/QuicTagVector throughout.
crypto_protocol.h has had CryptoTag and CryptoTagVector. Then quic_protocol.h
got QuicVersionTag and QuicVersionTagList because it didn't want to depend on
crypto_protocol.h
This change uses a single QuicTag and QuicTagVector throughout the code,
including the crypto code.
Merge internal change: 45230337
QUIC: move random values to the beginning and the certifiate chain to the end.
jar suggested that the certificate chain should have a tag that will cause it
to be sorted at the end of any handshake messages because it's likely to be
large and the client might be able to get everything that it needs from the
small values at the beginning.
Likewise he argued that tags with random values should be towards the beginning
of the message because the server mightn't hold state for a rejected client
hello and therefore the client may have issues reassembling the rejection
message in the event that it sent two client hellos.
This change tweaks the tag values to achieve that ordering.
Merge internal change: 45228375
Removing obselete TODOs
Merge internal change: 45219448
Use the idle connection state timeout negotiated in crypto handshake.
Merge internal change: 45176251
QUIC: address wtc's followup comments on cl/44792710.
This change addresses wtc's comments on cl/44792710. There should be no
semantic differences.
Merge internal change: 45051718
QUIC - Fixed HasRetransmittableData enum to have the correct values.
Fixed comments from rch
Merge internal change: 45143336
Change the QUIC version number to a new value which is amenable to frequent i ncrementing.
Merge internal change: 45111687
QUIC: run clang-format over .../quic/crypto.
I ran:
for x in $(ls -1 *.cc *.h) ; do clang-format -i $x -style Google; echo $x;
done
And then used git add -p to manually review the changes. In the cases where I
didn't care, I went with what the tool produced.
Merge internal change: 45053104
QUIC: address wtc's followup comments on cl/44792710.
This change addresses wtc's comments on cl/44792710. There should be no
semantic differences.
Merge internal change: 45051718
Minor cleanup of ReliableQuicStreamTest output. Also change MockConnection to create a NiceMock version of the Helper to avoid annoying GMock messages.
Merge internal change: 45010564
QUIC: partly deflake EndToEndTest.LargePost
Since cl/44690884, some runs of this test have timed out. Everything
appears to be working ok, just not fast enough. It's possible that the
additional packet `losses' caused by decryption failures when we lose
the client hello are convincing the congestion control that the loss
rate is very high.
However, since I have a trip to NIST this week, this change removes the
flake by reverting a tiny part of cl/44690884.
Sadly there is another flake in the test which this CL doesn't fix.
Details in the bug.
Merge internal change: 45008247
Fix a bug in QUIC header compression handling where buffered headers were not handled properly.
Merge internal change: 45007035
QUIC: tiny test cleanup.
wtc suggested this in a post-submission comment.
Merge internal change: 44898354
QUIC: add expiry to server configs and have the GFE generate random server configs.
Server configs need an expiry because they are effectively certificates. This
change has the GFE generate server configs with the same expiry as the primary
certificate.
It also switches the GFE to generating random server configs at startup.
(Random in the sense of random keys and orbit values.)
Originally I wanted to have the server config persist over a restart and so
derived them, deterministically, from the primary, private key with a todo to
diversify the orbit. However, since we don't have any shared strike registers
at the moment that doesn't seem to be worth the complexity. Also, figuring out
how to diversify the orbit value in a per-GFE sense is really messy (include
the hostname? include the port? Which port?). So this CL goes for simple and
secure.
Merge internal change: 44898035
QUIC: use 24-bit lengths for public values.
If ideal lattices don't work out then we may end up with Diffie-Hellman public
values that are larger than 16-bits. (Hopefully not, but you never know.)
Merge internal change: 44897191
QUIC: have the client echo the server's nonce.
This reflects a comment from wtc previously that this would be a good idea.
Merge internal change: 44896699
QUIC: steps 12 and 13, forward secure mode.
Merge internal change: 44896363
Fix LOG(DFATAL) when client sends invalid stream frame with fin.
Merge internal change: 44871764
R=rch@chromium.org
Review URL: https://chromiumcodereview.appspot.com/14816006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@199190 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implement header compression/decompression in ReliableQuicStream.
Merge internal change: 44867738
QUIC: deflake proof_test.
The current proof_test removes a byte from the start of the signature in order
to make it invalid. However, the signature is a big-endian number and, ~1% of
the time, the first byte will be zero - thus removing it doesn't change the
number.
This change adds a non-zero byte to the start of the signature instead.
Merge internal change: 44803399
Replace calls to scoped_ptr(NULL) with calls to scoped_ptr().
Merge internal change: 44799980
Add a blank line in order to get the dependencies correct for rebuild.
Merge internal change: 44796024
Fix "large integer implicitly truncated to unsigned type"
Merge internal change: 44793986
QUIC: compress certificates.
This change causes server certificates to be compressed using three tricks:
1) The client can advertise sets of common certificates that the server can
then simply reference. This change contains "common certificate set 0",
which is the set of the intermediates used twice or more in the Alexa top
5000. It's temporary because it's missing GIAG2 which we'll want to
include soon.
2) The client can send 64-bit, FNV-1a hashes of certificates that it already
has and the server can reference them by hash.
3) Otherwise, certifciates are gzip compressed with a dictionary that
includes any certificates compressed using the previous two methods and a
1500 byte lump of common substrings. (Again, taken from the Alexa top 5000)
POKE=1
Merge internal change: 44792710
R=mnaganov@chromium.org, rch@chromium.org
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=198736
Review URL: https://codereview.chromium.org/14651009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@198793 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Caused compile failures on the "Google Chrome ChromeOS" builder:
cc1plus: warnings being treated as errors
net/quic/quic_utils.cc:14:error: integer constant is too large for 'unsigned long' type
net/quic/quic_utils.cc:15:error: integer constant is too large for 'unsigned long' type
make: *** [out/Release/obj.target/net/net/quic/quic_utils.o] Error 1
> Land Recent QUIC changes
>
> Implement header compression/decompression in ReliableQuicStream.
>
> Merge internal change: 44867738
>
>
> QUIC: deflake proof_test.
>
> The current proof_test removes a byte from the start of the signature in order
> to make it invalid. However, the signature is a big-endian number and, ~1% of
> the time, the first byte will be zero - thus removing it doesn't change the
> number.
>
> This change adds a non-zero byte to the start of the signature instead.
>
> Merge internal change: 44803399
>
> Replace calls to scoped_ptr(NULL) with calls to scoped_ptr().
>
> Merge internal change: 44799980
>
> Add a blank line in order to get the dependencies correct for rebuild.
>
> Merge internal change: 44796024
>
> Fix "large integer implicitly truncated to unsigned type"
>
> Merge internal change: 44793986
>
> QUIC: compress certificates.
>
> This change causes server certificates to be compressed using three tricks:
> 1) The client can advertise sets of common certificates that the server can
> then simply reference. This change contains "common certificate set 0",
> which is the set of the intermediates used twice or more in the Alexa top
> 5000. It's temporary because it's missing GIAG2 which we'll want to
> include soon.
> 2) The client can send 64-bit, FNV-1a hashes of certificates that it already
> has and the server can reference them by hash.
> 3) Otherwise, certifciates are gzip compressed with a dictionary that
> includes any certificates compressed using the previous two methods and a
> 1500 byte lump of common substrings. (Again, taken from the Alexa top 5000)
>
> POKE=1
>
> Merge internal change: 44792710
>
> R=rch@chromium.org
>
> Review URL: https://chromiumcodereview.appspot.com/14651009
TBR=rtenneti@chromium.org
Review URL: https://codereview.chromium.org/15018013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@198764 0039d316-1c4b-4281-b951-d872f2087c98
|
|
Implement header compression/decompression in ReliableQuicStream.
Merge internal change: 44867738
QUIC: deflake proof_test.
The current proof_test removes a byte from the start of the signature in order
to make it invalid. However, the signature is a big-endian number and, ~1% of
the time, the first byte will be zero - thus removing it doesn't change the
number.
This change adds a non-zero byte to the start of the signature instead.
Merge internal change: 44803399
Replace calls to scoped_ptr(NULL) with calls to scoped_ptr().
Merge internal change: 44799980
Add a blank line in order to get the dependencies correct for rebuild.
Merge internal change: 44796024
Fix "large integer implicitly truncated to unsigned type"
Merge internal change: 44793986
QUIC: compress certificates.
This change causes server certificates to be compressed using three tricks:
1) The client can advertise sets of common certificates that the server can
then simply reference. This change contains "common certificate set 0",
which is the set of the intermediates used twice or more in the Alexa top
5000. It's temporary because it's missing GIAG2 which we'll want to
include soon.
2) The client can send 64-bit, FNV-1a hashes of certificates that it already
has and the server can reference them by hash.
3) Otherwise, certifciates are gzip compressed with a dictionary that
includes any certificates compressed using the previous two methods and a
1500 byte lump of common substrings. (Again, taken from the Alexa top 5000)
POKE=1
Merge internal change: 44792710
R=rch@chromium.org
Review URL: https://chromiumcodereview.appspot.com/14651009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@198736 0039d316-1c4b-4281-b951-d872f2087c98
|