Roll QUICHE

Roll QUICHE in openscreen to 5a433bd7d in order to be able to roll it in
Chromium.

Rename quic::QuicIPAddress to quiche::QuicheIPAddress everywhere.

This change must be rolled into Chromium in the same CL as the
corresponding QUICHE roll or it will not build.

$ git log 64cdc52a28..5a433bd7d --date=short --no-merges --format='%ad %ae %s'
2025-02-06 [email protected] Adds an oghttp2 option to disable Huffman compression of header field values.
2025-02-06 [email protected] No public description
2025-02-06 [email protected] Adds a `DISABLE_HUFFMAN` CompressionOption to SpdyFramer.
2025-02-06 [email protected] Refactor QuicTimeWaitList to make it easier to use a single connection ID map.
2025-02-06 [email protected] Count how often stricter base64 parsing would fail in Quiche's structured headers
2025-02-05 [email protected] Replaces `SpdyFramer::compression_enabled()` with `SpdyFramer::compression_option()`.
2025-02-05 [email protected] In `quic::ProofSourceHandle::SelectCertificate`, change the `client_hello` argument from the raw client hello bytes to a `SSL_CLIENT_HELLO` pointer.
2025-02-05 [email protected] Splits HpackEncoder::enable_compression_ into two bool members that are always toggled together.
2025-02-05 [email protected] Removes one parameter from `HpackEncoder::EmitNonIndexedLiteral()`.
2025-02-05 [email protected] Fixes a stream close condition in OgHttp2Session::CloseStreamIfReady.
2025-02-05 [email protected] Adds a unit test to compare the client adapter implementations when cancelling a stream.
2025-02-04 [email protected] Store a QuicAlarmFactory in MoqtSession.
2025-02-04 [email protected] Deprecate --gfe2_reloadable_flag_quic_buffered_store_set_client_cid.
2025-02-03 [email protected] Move QUIC Socket Address lib to QUICHE. Patch envoy to use QuicheSocketAddress instead
2025-02-03 [email protected] Log more detailed info when dumping GfeQuicClientStream.
2025-02-03 [email protected] MoQT SUBSCRIBES_BLOCKED frame.
2025-01-31 [email protected] Delete Role from MoQT.
2025-01-30 [email protected] Update MoQT priority design for latest draft.
2025-01-30 [email protected] Add new MoQT Errors.
2025-01-30 [email protected] Limit MoQT Namespace tuple size to (1, 32).
2025-01-29 [email protected] BlindSignAuth: Pass absl::StatusCode returned from Phosphor to callers if it's an error code.
2025-01-29 [email protected] No public description
2025-01-28 [email protected] Add Transport Parameter from draft-ietf-quic-ack-frequency-10.
2025-01-28 [email protected] In QUIC, do not send version negotiation in response to a version negotiation packet.
2025-01-27 [email protected] Remove DCHECK that is overly strict in QuicConnection::OnPacketHeader. Also change the function to return `connected_`.
2025-01-27 [email protected] Deprecate flag quic_ecn_in_first_ack
2025-01-27 [email protected] Deprecate gfe2_reloadable_flag_quic_avoid_nested_close_connection.
2025-01-27 [email protected] Enabling rolled out flags.
2025-01-27 [email protected] [CONFIDENTIAL] DO NOT upstream or share this information outside of Google. Contact wub@ for any questions.
2025-01-24 [email protected] Delete the code that sends the MinAckDelay transport parameter from draft-iyengar-quic-ack-frequency-01. Receiving the parameter is still supported.
2025-01-24 [email protected] Mark QuicheUtcDateTimeToUnixSecondsImpl QUICHE_EXPORT
2025-01-24 [email protected] Add a streamz and HttpProtocolDefects logging for requests with stray data after a chunk.
2025-01-23 [email protected] Remove QUICHE_EXPORT from template methods in GenericBugStreamHandler
2025-01-22 [email protected] Deprecate gfe2_restart_flag_quic_use_new_qpack_blocking_manager.
2025-01-21 [email protected] Adds unit tests demonstrating that the two adapter implementations behave the same.
2025-01-21 [email protected] IMMEDIATE_ACK frame processing.
2025-01-21 [email protected] Deprecate gfe2_reloadable_flag_quic_send_placeholder_ticket_when_encrypt_ticket_fails.
2025-01-21 [email protected] Add masque_tcp_client
2025-01-21 [email protected] Enabling rolled out flags.
2025-01-16 [email protected] Improve QUIC_BUG in GenerateRemainingCryptoFrames
2025-01-16 [email protected] Fix quic_frames_test when QUIC_FRAME_DEBUG is defined.
2025-01-16 [email protected] Add missing flag counts for quic_version_negotiation_rfc
2025-01-15 [email protected] Frame/parse IMMEDIATE_ACK frame.
2025-01-15 [email protected] Log more detailed error when GFE_BUG triggered in QuicSession::MarkConnectionLevelWriteBlocked.
2025-01-15 [email protected] Fix use after moved bug in QuicTimeWaitListManager.
2025-01-14 [email protected] Handle the unlikely case of reaching the end of an exhaustive enum in a test to appease GCC.
2025-01-14 [email protected] Remove OnConnectionAddedToTimeWaitList to reduce the complexity of QuicTimeWaitListManager.
2025-01-14 [email protected] No public description
2025-01-14 [email protected] LSC: Apply performance-unnecessary-value-param where it matters for performance.
2025-01-14 [email protected] No public description
2025-01-13 [email protected] Enabling rolled out flags.
2025-01-13 [email protected] Rejects tab and space when validating request paths in oghttp2.
2025-01-13 [email protected] Replace deprecated absl::HexStringToBytes call in QUIC test utils
2025-01-12 [email protected] Update ParseQuicTag to only use hex decoding if valid
2025-01-10 [email protected] Fixes up test coverage when strict path validation is not enabled.
2025-01-10 [email protected] Adds a test comparing path character validation across implementations.
2025-01-10 [email protected] Remove the INFO log for "No hostname indicated in SNI".
2025-01-09 [email protected] Do not attempt to receive IPv6 flow labels on Android since the setsockopt call always fails.
2025-01-09 [email protected] Automated g4 rollback of changelist 713678123.
2025-01-09 [email protected] Roll back gfe2_reloadable_flag_quic_can_send_ack_frequency.
2025-01-09 [email protected] Automated g4 rollback of changelist 712628602.
2025-01-08 [email protected] Fix use-after-free in MoQ Chat Server.
2025-01-08 [email protected] Prevent default true for quic_support_flow_label2 flag because it is breaking Android TAP.
2025-01-07 [email protected] No public description
2025-01-06 [email protected] ACK non-consecutive QUIC CE packets immediately.
2025-01-06 [email protected] Remove unnecessary copy in QuicChaosProtector
2025-01-06 [email protected] Moves the generic bug utility to QUICHE.
2025-01-06 [email protected] Officially allow out-of-order writes in QuicStreamSendBuffer
2025-01-06 [email protected] Enabling rolled out flags.
2025-01-06 [email protected] Update MoQ chat to draft-00.
2025-01-06 [email protected] Refresh MoQT integration test for FETCH and fix detected errors.
2024-12-27 [email protected] MoQT Upstream FETCH data streams.
2024-12-23 [email protected] Fix a flake in quic_udp_socket_test.cc caused by recvmsg occasionally returning EAGAIN by reading again in this case.
2024-12-20 [email protected] Switch QUIC version negotiation to RFC codepoint
2024-12-19 [email protected] Add a new QUIC Connection option to specify Cubic for the client side only.
2024-12-17 [email protected] Fix flakiness in chaos protection test
2024-12-17 [email protected] Send MoQT Fetch and handle FETCH_OK/FETCH_ERROR. The application can induce FETCH_CANCEL by destroying the MoqtFetchTask object it owns.
2024-12-16 [email protected] Declare nfds parameter of PollSyscall() as size_t
2024-12-16 [email protected] Split the alarm logic out of QuicPollEventLoop into its own queue.
2024-12-12 [email protected] Finish MoQT incoming ANNOUNCE life cycle (UNANNOUNCE).
2024-12-12 [email protected] In `QuicSelfIssuedConnectionIdManager::GetUnretiredConnectionIds`, call `std::vector::reserve` before the for loops to avoid unnecessary memory allocations.
2024-12-12 [email protected] Incoming MoQT SubscribeAnnounces lifecycle.
2024-12-12 [email protected] Add admin token support to phosphor
2024-12-11 [email protected] Mark quiche::GatherStringViewSpan as exported to Chromium.
2024-12-11 [email protected] Initialize dummy application data in QuicStreamTest to quiet asan warnings.
2024-12-11 [email protected] Add streamz to GfeQuicClientSession such that we can get resumption rate at connection level and early-data rate at stream level.
2024-12-10 [email protected] Fix build errors in Chromium.
2024-12-10 [email protected] Unblock quic_enable_chaos_protection_v2 flag
2024-12-10 [email protected] No public description
2024-12-10 [email protected] Send-side RESET_STREAM_AT frame. Nothing utilizes the API yet, so not protected.
2024-12-10 [email protected] Return transport parameters from TlsChloExtractor
2024-12-10 [email protected] Rename 'source_' in QuicSession to 'connection_close_source_'.
2024-12-10 [email protected] MoQT Outgoing ANNOUNCE life cycle.
2024-12-10 [email protected] In QuicDispatcher::CleanUpSession, Only serialize close packets if connection is self closed, i.e. not closed by peer.
2024-12-10 [email protected] Fix include of stddef.h.
2024-12-09 [email protected] Extracts out a helper method to determine whether a chunk extension character is valid.
2024-12-09 [email protected] Outgoing MoQT SUBSCRIBE_ANNOUNCES life cycle.
2024-12-08 [email protected] Notify a closed non-static stream once it is about to be destroyed via a new interface QuicStream::OnSoonToBeDestroyed() with no-op default implementation.
2024-12-06 [email protected] Set a minimum number of chaos protection in new protector
2024-12-06 [email protected] Switch QuicheMemSlice to a platform-independent implementation.
2024-12-06 [email protected] Add APIs to read until a specific point in the stream is reached.
2024-12-05 [email protected] Rewrite MoqtDataParser to only consume one thing at a time.
2024-12-05 [email protected] Moves //third_party/http2:http2_structures_lib to //third_party/http2/core/.
2024-12-05 [email protected] Moves //third_party/http2:http2_constants_lib to //third_party/http2/core/.
2024-12-04 [email protected] Add test utils to parse control messages and to extract subscribe details.
2024-12-04 [email protected] Automated g4 rollback of changelist 702422246.
2024-12-04 [email protected] Remove impl-based MemSlice constructor.
2024-12-03 [email protected] Remove the version check and TODO in `QuicFramer::TryDecryptInitialPacketDispatcher`.
2024-12-03 [email protected] Chaos Protection v2
2024-12-03 [email protected] Use absl::make_unique_for_overwrite where we will reinitialize the buffer.
2024-12-03 [email protected] Re-enable chlo buffering on the server side of Hyperloop.
2024-12-02 [email protected] Add webtransport::test::InMemoryStream for simplifying testing code that reads from WebTransport streams.
2024-12-02 [email protected] Fix the definition of MoQT MAX_SUBSCRIBE_ID.
2024-12-02 [email protected] Adds unit test cases covering the case where a content-length undershoot causes a PROTOCOL_ERROR.
2024-12-02 [email protected] Fix spelling of QuicheWeakPtr::GetIfAvaliable => GetIfAvailable.
2024-11-27 [email protected] Refactor MoQT Upstream SUBSCRIBE processing and data structures.
2024-11-26 [email protected] gfe-relnote: Call QuicAckListenerInterface::OnPacketAcked() before moving the stream to closed stream list.
2024-11-26 [email protected] No public description
2024-11-26 [email protected] Use wub's new test features in QuicBufferedPacketStoreTest:SimpleEnqueueAckSent
2024-11-26 [email protected] Add test matchers for writing MoQT control messages into a mock stream.
2024-11-25 [email protected] Fix standalone build.
2024-11-25 [email protected] Adds unit test cases covering the case where a content-length overshoot causes a PROTOCOL_ERROR.
2024-11-25 [email protected] Migrates adapter unit tests away from deprecated SubmitRequest/SubmitResponse methods.
2024-11-25 [email protected] Set client CID in the packets sent by QuicBufferedPacketStore.
2024-11-25 [email protected] Removes DataFrameSource arguments from Http2Adapter methods and implementations.
2024-11-25 [email protected] Removes DataFrameSource interface methods and related utilities.
2024-11-25 [email protected] Enabling rolled out flags.
2024-11-25 [email protected] Removes DataFrameSource-based DATA frame manipulation from OgHttp2Session.
2024-11-25 [email protected] Move MoqtSessionPeer into its own file.
2024-11-25 [email protected] Removes DataFrameSource-based DATA frame manipulation from NgHttp2Adapter.
2024-11-22 [email protected] Add missing error string in QuicFramer
2024-11-22 [email protected] Reworks the remaining DataFrameSource-based test cases in nghttp2_adapter_test.cc.
2024-11-22 [email protected] Implement QuicheWeakPtr that roughly models Chromium's base::WeakPtr API.
2024-11-22 [email protected] Removes use of VisitorDataSource in more tests.
2024-11-22 [email protected] Refactor ConsumeCryptoData
2024-11-22 [email protected] Removes use of VisitorDataSource in oghttp2_adapter_test.cc.
2024-11-22 [email protected] Removes deprecated and unused methods from the Http2Adapter interface.
2024-11-22 [email protected] Removes use of VisitorDataSource in nghttp2_adapter_test.cc.
2024-11-21 [email protected] Switch QUICHE standalone build to use the newest Bazel actually supported by our CI bots.
2024-11-21 [email protected] Remove forwarding_preference from MoqtObject.
2024-11-21 [email protected] Delete MoQT Track Forwarding preference and roll version to -07.
2024-11-21 [email protected] Publisher-side MoQT FETCH handling.
2024-11-21 [email protected] Update QUICHE to use Bazel 7.4.1, but without bzlmod for now
2024-11-21 [email protected] Fix default constructor in the default implementation of QuicheMemSlice.
2024-11-21 [email protected] Switch away from std::iterator in BalsaHeaders
2024-11-21 [email protected] Group mock_load_balancer_encoder.h with load_balancer in the standalone build
2024-11-20 [email protected] Remove obsolete TODOs about converting char uint8_t.
2024-11-20 [email protected] Avoid tripping -Wchanges-meaning in GCC
2024-11-20 [email protected] Remove ResumptionAttempted assertion in TlsServerHandshakerTest.ResumptionWithPlaceholderTicket
2024-11-20 [email protected] Simplify how quiche platform files are incorporated
2024-11-20 [email protected] Implement a function that gathers data from bunch of string_views into a single buffer.
2024-11-20 [email protected] Close the connection with error QUIC_HTTP_INVALID_FRAME_SEQUENCE_ON_SPDY_STREAM if FIN is received before finishing receiving the whole HTTP headers.
2024-11-20 [email protected] Allow more URLs in masque_client
2024-11-20 [email protected] No public description
2024-11-19 [email protected] Fix standalone QUICHE build.
2024-11-19 [email protected] Fix a hardcoded cacheline size.
2024-11-18 [email protected] Add an oghttp2 option to disable sending GOAWAYs as a client.
2024-11-18 [email protected] Raises the verbosity level of most QUICHE_VLOGs within OgHttp2Session.
2024-11-18 [email protected] Add oghttp2 and nghttp2 testing to demonstrate client GOAWAY-sending behavior.
2024-11-18 [email protected] No public description
2024-11-18 [email protected] Enabling rolled out flags.
2024-11-18 [email protected] No public description
2024-11-18 [email protected] Use string_view::substr when making string_views out of other strings
2024-11-17 [email protected] Remove QuicheMutex, etc., indirection
2024-11-16 [email protected] FIN MoQT streams when directed by the TrackPublisher.
2024-11-15 [email protected] Add a cache key field to QuicServerId.
2024-11-15 [email protected] Add a callback to FetchTask API.
2024-11-14 [email protected] Quiche: inline constexpr variables in headers
2024-11-14 [email protected] Allow chaos protection with ACK frames
2024-11-14 [email protected] Remove inappropriate calls to ResetWriteSide().
2024-11-14 [email protected] Update Http2VisitorInterface::OnHeaderResult from enum to enum class.
2024-11-14 [email protected] Rename QuicChaosProtector
2024-11-14 [email protected] Refactor QuicChaosProtector
2024-11-13 [email protected] Update ECN tests to function properly in Guitar.
2024-11-13 [email protected] Some more QUICHE build fixes
2024-11-13 [email protected] Add missing dependency to quiche_test_support
2024-11-13 [email protected] Rename QuicTag kIFWA to kIFWa
2024-11-12 [email protected] Remove unused TPCC QuicTag and rename the variables * kORBT -> kOBIT * kMIBS -> kMIDS to match their on-the-wire value.
2024-11-12 [email protected] Deprecate --gfe2_reloadable_flag_quic_allow_host_in_request2.
2024-11-12 [email protected] Allows a unit test to be exported as part of QUICHE.
2024-11-12 [email protected] Change protection scheme for code that marks outgoing ECT.
2024-11-11 [email protected] Change `QuicUnackedPacketMap::NotifyFramesAcked` and `QuicUnackedPacketMap::MaybeAggregateAckedStreamFrame` to take `QuicTransmissionInfo*&` as a input-output parameter.
2024-11-08 [email protected] Add ECN counters to ACKs sent by the QuicBufferedPacketStore.
2024-11-07 [email protected] Rename gfe2_restart_flag_quic_support_flow_label to gfe2_restart_flag_quic_support_flow_label2 now that QUIC flow label support seems to be complete.
2024-11-05 [email protected] Adds backslash `\` to the list of characters allowed in a HTTP request path.
2024-11-05 [email protected] Add support for sending IPv6 flow labels to QuicGsoBatchWriter
2024-11-05 [email protected] Simplifies and modernizes SpdyDataIR.
2024-11-04 [email protected] Update googleurl in QUICHE bazel build
2024-11-04 [email protected] MASQUE: add tap bridging support for CONNECT-ETHERNET
2024-11-04 [email protected] Fix the issue that -Wrange-loop-construct higlighted in quiche.
2024-11-01 [email protected] Send raw counts of reported ECN marks in QUIC ACK frames to the debugger.
2024-11-01 [email protected] No public description
2024-11-01 [email protected] Mark sec-authenticated-request-headers as a repeated header
2024-10-31 [email protected] Remove a stray semi-colon from quiche_protocol_flags_list.h
2024-10-31 [email protected] Adds unit tests for clients handling END_STREAM after 1xx headers without final response headers.
2024-10-29 [email protected] Add transport parameter 'discard' to QUIC and switch connection option `CHP1` and `CHP2` to use it.
2024-10-29 [email protected] Record stats when forward progress is made on a QUIC connection after changing the flow label on PTO.
2024-10-29 [email protected] Implement QuicAlarmMultiplexer.
2024-10-28 [email protected] Deprecate gfe2_reloadable_flag_quic_add_ssl_error_stack_to_error_detail.
2024-10-28 [email protected] Parser/Framer for MoQT FETCH Stream messages.
2024-10-28 [email protected] Delete Subscribe ID from MoQT Object headers
2024-10-25 [email protected] Adds a new `ResponseCodeDetails`: `INVALID_HTTP2_CLIENT_REQUEST_PATH`.
2024-10-25 [email protected] Replace direct pointers and references to QuicAlarms with a QuicAlarmProxy
2024-10-24 [email protected] Remove unused parameter `server_connection_id` from QuicDispatcher::OnExpiredPackets.
2024-10-24 [email protected] Two Subscriptions to the same MoQT Track in a session is an error.
2024-10-24 [email protected] Adds the ability to make annotations on quiche::LifetimeTrackable objects.
2024-10-24 [email protected] MoQT SUBSCRIBE to a prior group is an error.
2024-10-24 [email protected] Framer and Parser for MoQT FETCH family messages in draft-07.
2024-10-24 [email protected] Implement a publisher API for fetch.
2024-10-23 [email protected] Deprecate --gfe2_restart_flag_quic_dispatcher_ack_buffered_initial_packets.
2024-10-23 [email protected] Avoid nested CloseConnection calls in QuicConnection.
2024-10-22 [email protected] Allow client to activate PragueCubic congestion control via connection option for experiment purposes.
2024-10-22 [email protected] Fix standalone QUICHE build
2024-10-21 [email protected] No public description
2024-10-21 [email protected] Add MoqtProbeManager
2024-10-21 [email protected] Update MoqtLiveRelayQueue for Peeps. Places incoming objects in subgroup queues and delivers them in subgroup order.
2024-10-21 [email protected] Rename SUBSCRIBE_NAMESPACE as SUBSCRIBE_ANNOUNCES in MoQT.
2024-10-21 [email protected] Enabling rolled out flags.
2024-10-17 [email protected] Make Hyperloop client and server enable flow label changes to avoid black holes.
2024-10-17 [email protected] Update SimpleSessionNotifier for RESET_STREAM_AT frames.
2024-10-17 [email protected] Don't track support for RESET_STREAM_AT in QuicConnection. Instead, rely on state in QuicFramer.
2024-10-17 [email protected] Remove an unnecessary setsockopt of IPV6_FLOWINFO_SEND. Enabling IPV6_FLOWINFO_SEND causes the kernel to send a randomly generated flow label unless a flow label is explicitly provided in a CMSG. Since we already wired up support to set the label in CMSG, this call is redundant and it has the unintended side effect of causing random flow labels to be sent, even for sockets where no flow labels are intended. For QuicUdpSocket users that do not intend to send flow labels, this would be a behavior change.
2024-10-17 [email protected] Make QuicConnection  generate a new flow label when flow label based black hole avoidance is enabled, and added CODE_COUNTS for when the flow label changes
2024-10-17 [email protected] Update QuicControlFrameManager to support RESET_STREAM_AT frames.
2024-10-17 [email protected] Automated g4 rollback of changelist 685776850.
2024-10-17 [email protected] Only check for flow label functionality in the QUIC end-to-end test if the connection is actually using IPv6.
2024-10-16 [email protected] Change IPv6 flow labels when QUIC connections have a retransmission timeout or when a new packet that creates a gap is received with a new flow lable.
2024-10-16 [email protected] Clean up a few QuicConnectionTests
2024-10-15 [email protected] Deprecate --gfe2_reloadable_flag_quic_new_error_code_for_invalid_hostname.
2024-10-15 [email protected] Enable stack protector to prevent stack buffer overflows.
2024-10-15 [email protected] Enabling rolled out flags.
2024-10-14 [email protected] Allow QUIC connections to send and receive IPv6 flow labels.
2024-10-14 [email protected] Always support SPAD on the client side.
2024-10-14 [email protected] Change HeaderBlock members to be const.
2024-10-14 [email protected] Fix goolgeurl tarball link.
2024-10-14 [email protected] Automated g4 rollback of changelist 685757306.
2024-10-14 [email protected] Optimize QpackBlockingManager for CPU efficiency.
2024-10-14 [email protected] Automated g4 rollback of changelist 685481728.
2024-10-14 [email protected] Replaces inefficient standard library container types with Abseil and QUICHE equivalents.
2024-10-13 [email protected] Automated g4 rollback of changelist 684986925.
2024-10-12 [email protected] Fix 2 ProtobufTransformer findings: * Remove dead proto options (2 times)
2024-10-12 [email protected] Remove dead proto options
2024-10-11 [email protected] Add support for qbone bridging.
2024-10-11 [email protected] Remove DCHECK which breaks Target: //video/streaming/edge:edge_server_wrapper_test
2024-10-11 [email protected] Add QUIC code counters to observe the effect of application driven pacing.
2024-10-11 [email protected] Change `ProofSourceHandleCallback::ConfigureSSLFunc` and `ProofSourceHandleCallback::ALPNSelectFunc` from `std::function` to `quiche::SingleUseCallback`. `quiche::SingleUseCallback` is an alias for single-use `absl::AnyInvocable`.
2024-10-11 [email protected] Implement support for reading and writing IPv6 flow labels in QuicUdpSocket.
2024-10-10 [email protected] Fix 4 ProtobufTransformer findings: * Remove dead proto options (4 times)
2024-10-10 [email protected] Updates tests to demonstrate a behavior difference between oghttp2 and nghttp2.
2024-10-10 [email protected] Fix 10 ProtobufTransformer findings: * Remove dead proto options (10 times)
2024-10-09 [email protected] Update SHA checksume of googleurl library.
2024-10-09 [email protected] No public description
2024-10-08 [email protected] No public description
2024-10-08 [email protected] Change `QuicConnection.termination_packets_` to `QuicConnection.termination_info_`, which bundles the termination packets with the connection close error code.
2024-10-07 [email protected] Add more specific error codes for QUIC handshake failures.
2024-10-07 [email protected] Replace deprecated HexStringToBytes API
2024-10-07 [email protected] Enabling rolled out flags.
2024-10-07 [email protected] Add length field to MoQT control messages.
2024-10-03 [email protected] Add missing "override" specifier in mock methods.
2024-10-03 [email protected] Add a new OnParsedClientHelloReceived method to QuicConnection and QuicConnectionDebugVisitor.
2024-10-02 [email protected] Deprecate --gfe2_reloadable_flag_quic_new_error_code_when_packets_buffered_too_long.
2024-10-02 [email protected] No public description
2024-10-02 [email protected] No public description
2024-10-01 [email protected] Adds test cases exercising response-complete-before-request for nghttp2 and oghttp2.
2024-10-01 [email protected] Add parser/framer support for SUBSCRIBE_NAMESPACE, SUBSCRIBE_NAMESPACE_OK, SUBSCRIBE_NAMESPACE_ERROR, UNSUBSCRIBE_NAMESPACE.
2024-10-01 [email protected] Removes the last library in //third_party/spdy/core, and deletes the package.
2024-10-01 [email protected] Add QUIC connection options for testing: - CHP1: Add 1-packet padding to CHLO. - CHP2: Add 2-packet padding to CHLO.
2024-09-30 [email protected] Don't set IPv4 socket options on dual-stack sockets on `__APPLE__` platforms.
2024-09-30 [email protected] Update WebTransport header names.
2024-09-30 [email protected] Simplify some of the framing code.
2024-09-30 [email protected] Record QUIC traces in moqt_simulator.
2024-09-30 [email protected] Implement MoQT Peeps and Object message changes for draft-06. This is the minimum for interoperability; this code always sends subgroup_id = 0 and ignores the incoming subgroup_id.
2024-09-30 [email protected] Update existing messages for draft-06. This is mostly turning track_namespace into a tuple.  Also generalizes Subscribe parameters.
2024-09-26 [email protected] Migrates code from `//third_party/spdy/core:spdy_protocol_lib` to `//third_party/http2/core:spdy_protocol`.
2024-09-26 [email protected] fix asan error because the log message uses the variable about to be initialized, rather than the value being assigned.
2024-09-26 [email protected] Deletes unused artifacts from //third_party/spdy.
2024-09-26 [email protected] Complete processing of RESET_STREAM_AT frames. Negotiate with transport parameters and pass the frame from QuicConnection to QuicStream.
2024-09-26 [email protected] Moves //third_party/spdy/core:http2_frame_decoder_adapter_fuzzer to //third_party/http2/core.
2024-09-26 [email protected] Migrates code from `//third_party/spdy/core:spdy_protocol_lib` to `//third_party/http2/core:spdy_protocol`.
2024-09-26 [email protected] Moves libraries from //third_party/spdy/core/hpack to //third_party/http2/hpack.
2024-09-26 [email protected] No public description
2024-09-26 [email protected] Migrates the old cc_fuzz_target in //third_party/spdy to the modern go/fuzztest framework.
2024-09-25 [email protected] Migrates code from //third_party/spdy/core:spdy_framer_lib to //third_party/http2/core:spdy_framer.
2024-09-25 [email protected] If QUIC server closes connection due to invalid hostname in SNI, use new connection close code `QUIC_HANDSHAKE_FAILED_INVALID_HOSTNAME` instead of the generic `QUIC_HANDSHAKE_FAILED`.
2024-09-25 [email protected] Removes the now-unused build target //third_party/spdy/core:http2_header_block_lib.
2024-09-25 [email protected] Migrates targets from `//third_party/spdy/core:spdy_alt_svc_wire_format_lib` to `//third_party/http2/core:spdy_alt_svc_wire_format`.
2024-09-25 [email protected] Migrates remaining google3 users of spdy::Http2HeaderBlock to quiche::HttpHeaderBlock.
2024-09-25 [email protected] Migrates code from `//third_party/spdy/core:http2_deframer_lib` to `//third_party/http2/core:http2_frame_decoder_adapter`.
2024-09-25 [email protected] Roll the version number to draft-06. This will break interoperability with other MoQT implementations until we update the wire image.
2024-09-25 [email protected] Refactor MoQT interfaces to consistently pass FullTrackName around.
2024-09-24 [email protected] MOQT MAX_SUBSCRIBE_ID implementation
2024-09-24 [email protected] No public description
2024-09-24 [email protected] BlindSignAuth: Update error messages to return constant strings. Messages now return at Anonymous Tokens-level granularity.
2024-09-24 [email protected] Deprecate --quic_dispatcher_replace_cid_on_first_packet.
2024-09-23 [email protected] No public description
2024-09-23 [email protected] Remove quic::QuicServerId::privacy_mode_enabled()
2024-09-23 [email protected] Enabling rolled out flags.
2024-09-23 [email protected] No public description
2024-09-22 [email protected] Postpone removing handshake timeout from transport params getting negotiated to handshake complete.
2024-09-22 [email protected] Deliver STOP_SENDING to zombie streams.
2024-09-20 [email protected] No public description
2024-09-19 [email protected] Introduce padding streams.
2024-09-19 [email protected] QUICHE: always print ACK ranges as [a...b], except if the range is a single packet.
2024-09-19 [email protected] Split MoqtParser into MoqtControlParser and MoqtDataParser.
2024-09-18 [email protected] Adds `^` and `|` to the set of allowed characters in HTTP/2 request paths.
2024-09-18 [email protected] Add an IPv6 flow label field to QuicPacketWriterParams so that packet writers can set this field when writing packets. Currently nothing sets this field.
2024-09-18 [email protected] No public description
2024-09-18 [email protected] Clean up MoqtTestMessage
2024-09-18 [email protected] Update QuicStream to handle RESET_STREAM_AT frames.
2024-09-17 [email protected] No public description
2024-09-17 [email protected] macro cleanup: "(const override)" -> "(const, override)"
2024-09-16 [email protected] Implement L4S version of Cubic congestion control for QUIC.
2024-09-16 [email protected] Deprecate --gfe2_reloadable_flag_quic_bbr2_enable_bbpd_by_default.
2024-09-13 [email protected] Add extra error details to TlsServerHandshaker to indicate the reason for `ssl_select_cert_error`. It is added into the connection close error details, which we can query from logs.
2024-09-12 [email protected] No public description
2024-09-12 [email protected] Add logic to be able to adjust MoQ bitrate downwards.
2024-09-12 [email protected] Add code counts and error details to debug QUIC TLS handshake failures.
2024-09-10 [email protected] Order MoQT Queued streams by send_order.
2024-09-09 [email protected] Allows [] and {} in request paths.
2024-09-09 [email protected] Add CRNT to Cronet QUIC connection options.
2024-09-05 [email protected] No public description
2024-09-05 [email protected] Allow HTTP/3 requests to have a "host" header, per the RFC (Re-landing QUICHE-only changes from cl/666964686)
2024-09-04 [email protected] Switch some `QUIC_LOG` lines to `QUIC_PLOG`, which will include the textual expansion of `errno` to the log line.
2024-09-04 [email protected] Convert some `errno` values to human readable form.
2024-09-03 [email protected] Enabling rolled out flags.
2024-09-03 [email protected] Add a new message status for sending HTTP Datagrams before SETTINGS are received.
2024-09-03 [email protected] Fix quic_mutex.h to remove redefined macros.
2024-08-29 [email protected] Add MoQT Track forwarding preference to IsStreamProvokingObject()
2024-08-29 [email protected] Automated g4 rollback of changelist 666964686.
2024-08-28 [email protected] Introduce Object ACKs (OACKs) to MoQT.
2024-08-26 [email protected] Enabling rolled out flags.
2024-08-23 [email protected] Allow HTTP/3 requests to have a "host" header, per the RFC
2024-08-23 [email protected] Fix one incorrect use of GetMinCryptoFrameSize
2024-08-23 [email protected] No public description
2024-08-22 [email protected] Implement echo handler in QuicMemoryCacheBackendTest
2024-08-22 [email protected] Fix MoQT MSAN error: Use the singleton SimpleBufferAllocator to avoid this being freed before cached objects.
2024-08-22 [email protected] Add test for MoQ Chat where a client leaves and rejoins. Fix resulting problems.
2024-08-21 [email protected] Split SUBSCRIBE parameters into their own struct.
2024-08-20 [email protected] Abstract out the MoQ Chat User interface and implement E2E chat test.
2024-08-19 [email protected] Automated g4 rollback of changelist 661833030.
2024-08-16 [email protected] No public description
2024-08-16 [email protected] Add delivery order control into the simulator.
2024-08-16 [email protected] Add `deadline` parameter to MoQT simulation.
2024-08-15 [email protected] Move a flag count for flag `quic_dispatcher_replace_cid_on_first_packet`.
2024-08-14 [email protected] No public description
2024-08-14 [email protected] Let QuicDispatcher to send acks to buffered INITIAL packets.
2024-08-14 [email protected] Fix MSAN errors.
2024-08-13 [email protected] Add ability to run QuicDispatcher without any versions
2024-08-13 [email protected] Actually set stream priorities in MoQT.
2024-08-13 [email protected] Adds `quiche::header_properties::HasInvalidPathChar()`.
2024-08-12 [email protected] Remove QuicHeaderList::OnHeaderBlockStart().
2024-08-12 [email protected] No public description
2024-08-12 [email protected] Uses the `DataFrameAssembler` in `Http2Dispatcher`.
2024-08-12 [email protected] Factor out size limit logic from QuicHeaderList.
2024-08-12 [email protected] Remove quic/platform/api/quic_mutex.h
2024-08-11 [email protected] Upgrade to the latest protobuf edition
2024-08-09 [email protected] Fix bug in QpackEncoder when cookie crumbling is disabled. Without this fix, encoded cookies will be truncated.
2024-08-09 [email protected] No public description
2024-08-09 [email protected] Add a first implementation of the CustomProbeService interface to the bonnet.
2024-08-09 [email protected] No public description
2024-08-08 [email protected] Refactor MoQ ChatClient to support end-to-end tests and use moq_chat.h.
2024-08-08 [email protected] Fix standalone QUICHE build.
2024-08-07 [email protected] Allocate memory less often in HttpHeaderBlock hash function
2024-08-07 [email protected] Implement moq-chat server.
2024-08-07 [email protected] Deprecates QUICHE reloadable flag http2_add_hpack_overhead_bytes2.
2024-08-07 [email protected] Update and simplify QUICHE platform documentation.
2024-08-07 [email protected] Remove obsolete comment.
2024-08-07 [email protected] Adds a way to reject messages with `obs-text` in header field names.
2024-08-07 [email protected] Reorders members of BalsaFrame, and uses a more compact representation.
2024-08-06 [email protected] Use kMetadataExtensionId directly in switch case.
2024-08-06 [email protected] Modernize constants in http_protocol.h.
2024-08-06 [email protected] Set chrome_value to true for gfe2_reloadable_flag_enable_h3_origin_frame.
2024-08-06 [email protected] Enabling rolled out flags.
2024-08-01 [email protected] Fix //third_party/quic/core:quic_dispatcher_test with Q046.
2024-08-01 [email protected] Add EVMB to Envoy QUIC connection options.
2024-08-01 [email protected] QUIC TlsClientHandshaker: Demote some INFO logs to DLOG.
2024-07-31 [email protected] Replace QUIC CID when the first INITIAL packet of a connection is enqueued into the QuicBufferedPacketStore.
2024-07-31 [email protected] Remove unused MoqtSession reference from MoqtOutgoingQueue.
2024-07-31 [email protected] Add CookieCrumbling argument to QpackEncoder constructor, and add QuicSpdySession::DisableCookieCrumbling() method.
2024-07-31 [email protected] Add ValueSplittingHeaderList option to disable cookie crumbling during QPACK encoding.
2024-07-30 [email protected] Restore operation of chat_client_bin after draft-05 update.
2024-07-30 [email protected] Updates //net/floo to refer to the new location of some HTTP/2 libraries.
2024-07-29 [email protected] Add QUICHE support for the HTTP/3 ORIGIN frame.
2024-07-26 [email protected] Modernize the HTTP/3 HttpDecoder by using non-const references in place of non-null pointers, when they do not outlive the call. Annotate with absl::NonNull when pointer do outlive the call.
2024-07-25 [email protected] Add method to serialize connection close packet with large packet number
2024-07-24 [email protected] Always obeys BalsaFrame::invalid_chars_level_ when parsing header fields.
2024-07-24 [email protected] Inline QuicDispatcher::BufferEarlyPacket() from all call sites, and remove this function.
2024-07-22 [email protected] Fix bug for call to Visitor::OnWrite()
2024-07-19 [email protected] Bump version number to draft-05.
2024-07-19 [email protected] Implement draft-05 SUBSCRIBE/SUBSCRIBE_UPDATE
2024-07-18 [email protected] Support serialization and parsing for MoQT draft-05 group order in SUBSCRIBE_OK.
2024-07-18 [email protected] Support serialization and parsing for MoQT draft-05 publisher priority.
2024-07-18 [email protected] Refactor MoQT sending logic to pull objects from the application, instead of pushing them onto individual MoQT sessions.
2024-07-18 [email protected] Updates SpdyFrameSequence::GetIR() to return a pointer rather than a reference.
2024-07-18 [email protected] Unhide security fix to QuicStreamSequencerBuffer added in cl/626072759.
2024-07-18 [email protected] Add NOIP connection option and AddConnectionOptionsToSend method.
2024-07-17 [email protected] Make implicit `this` capture explicit
2024-07-17 [email protected] No public description
2024-07-17 [email protected] Fix test ConnectionMigrationWithNonZeroConnectionIDClientIPChangedMultipleTimes.
2024-07-16 [email protected] Deprecate gfe2_restart_flag_quic_opport_bundle_qpack_decoder_data5.
2024-07-16 [email protected] Migrates all users of spdy::Http2HeaderBlock to quiche::HttpHeaderBlock.
2024-07-16 [email protected] Migrates all users of spdy::Http2HeaderBlock to quiche::HttpHeaderBlock.
2024-07-16 [email protected] Fix a bug in parser where for non-normal object status, the number of bytes read was counted incorrectly.
2024-07-16 [email protected] Migrates all users of spdy::Http2HeaderBlock to quiche::HttpHeaderBlock.
2024-07-15 [email protected] Migrates all users of spdy::Http2HeaderBlock to quiche::HttpHeaderBlock.
2024-07-15 [email protected] Unhide security fix to QuicSpdyStream (cl/626052950).
2024-07-12 [email protected] Migrates all users of spdy::Http2HeaderBlock to quiche::HttpHeaderBlock.
2024-07-12 [email protected] Fix a memory leak in InitializeAndCheckForTlsPskFailure test helper
2024-07-11 [email protected] Parse and log cert compression algos from CHLO.
2024-07-11 [email protected] Modify the visitor to allow it to interact with packets written by the packet exchanger.
2024-07-11 [email protected] Implement MoQT priority calculation.
2024-07-11 [email protected] Bring SpdyIntrusiveList back to life as QuicheIntrusiveList.
2024-07-11 [email protected] Split MoqtSession::Stream into ControlStream, IncomingDataStream, and OutgoingDataStream.
2024-07-11 [email protected] Migrates all users of spdy::Http2HeaderBlock to quiche::HttpHeaderBlock.
2024-07-11 [email protected] No public description
2024-07-11 [email protected] Migrates all users of spdy::Http2HeaderBlock to quiche::HttpHeaderBlock.
2024-07-11 [email protected] Remove `should_update_expected_server_connection_id_length_` from QuicDispatcher.
2024-07-10 [email protected] Moves the remaining library targets from //third_party/spdy/core to //third_party/http2/core.
2024-07-10 [email protected] Moves several targets from //third_party/spdy/core to //third_party/http2/core.
2024-07-09 [email protected] Add HttpProtocolDefect tracking for invalid target URIs.
2024-07-09 [email protected] Remove QuicDispatcher::SetAllowShortInitialServerConnectionIds.
2024-07-09 [email protected] Moves test utilities from //third_party/spdy/test_tools/ to //third_party/http2/test_tools/.
2024-07-09 [email protected] Update PreSharedKey tests to pass without non-fatal QUIC_BUG
2024-07-09 [email protected] Moves some build targets from //third_party/spdy/core/hpack to //third_party/http2/hpack.
2024-07-09 [email protected] Moves a SPDY test utility to the only package that references it.
2024-07-08 [email protected] Rename HuffmanEncodeFast() to HuffmanEncode().
2024-07-08 [email protected] Deprecate --gfe2_reloadable_flag_quic_better_qpack_compression.
2024-07-08 [email protected] Remove slow HuffmanEncode().
2024-07-08 [email protected] Improve QuicConnectionTest test times
2024-07-03 [email protected] BlindSignAuth: Switch to WebSafeBase64EscapeWithPadding for token and extensions in PrivacyPassTokenData, per version 02 of draft-wood-privacypass-auth-scheme-extensions.
2024-07-02 [email protected] Remove quic/core/quic_flags_list.h.
2024-07-01 [email protected] In `QuicBufferedPacketStoreTest`, pass `long_packet_type` to `QuicBufferedPacketStore::EnqueuePacket`.
2024-06-28 [email protected] Removes BalsaFrame::InvalidCharsLevel::kWarning and related code.
2024-06-28 [email protected] Removes tracking of invalid character counts in BalsaFrame.
2024-06-28 [email protected] Fix standalone QUICHE build
2024-06-28 [email protected] Move MoqtTrack code into a .cc file.
2024-06-28 [email protected] Handle MoQT ANNOUNCE_CANCEL messages.
2024-06-28 [email protected] Make default impl use quiche_feature_flags_list.h instead of quic_flags_list.h.
2024-06-27 [email protected] Automated g4 rollback of changelist 646639268.
2024-06-26 [email protected] Change the service type for WebView to "chromeipblinding"
2024-06-26 [email protected] Add `external_value` to quiche/common/quiche_feature_flags_list.h.
2024-06-25 [email protected] Add flag count for `quic_bbr2_enable_bbpd_by_default`.
2024-06-25 [email protected] Defines some string constants as `inline constexpr absl::string_view`.
2024-06-25 [email protected] Add test expectation of INVALID_HEADER_CHARACTER warning when header value has NULL.
2024-06-25 [email protected] MoQT: Use object status for end of groups and SUBSCRIBE_DONE.
2024-06-24 [email protected] Adds a `HttpValidationPolicy` option to sanitize or reject invalid whitespace in the HTTP first line.
2024-06-24 [email protected] Fix a bug in libevent-based QuicEventLoop where artificial events are notified in the same epoll iteration.
2024-06-21 [email protected] Adds a visitor-based metadata sending API to Http2Adapter and subclasses.
2024-06-21 [email protected] Demotes an ERROR log message to VLOG(1).
2024-06-20 [email protected] Add a new HttpValidationPolicy option `disallow_invalid_target_uris` which will reject invalid target URIs in HTTP/1 requests. This includes: * asterisk-form ("*") for methods other than OPTIONS * CONNECT request without a valid port, or without balanced IPv6 brackets * Otherwise, target URIs which do not start with '/' or contain '://'
2024-06-20 [email protected] Update QuicStream::OnConnectionClosed() to take in full connection close frame so that error details can be extracted.
2024-06-20 [email protected] Update to draft-ietf-httpbis-unprompted-auth-07
2024-06-20 [email protected] Fix disallow_lone_cr_in_chunk_extension behavior.
2024-06-17 [email protected] Fix uninitialized pointer in CLI for moqt chat client.
2024-06-17 [email protected] Add Balsa tests documenting \r detection behavior.
2024-06-17 [email protected] Fix scope of SubscribeWindow argument to fix ASAN error.
2024-06-17 [email protected] Enabling rolled out flags.
2024-06-15 [email protected] Add Object Status to MoQT Object Messages.
2024-06-14 [email protected] Move PacketCollector from `quic_dispatcher.cc` to `quic_buffered_packet_store.h`.
2024-06-14 [email protected] MoQT tracking of largest object ID in each group.
2024-06-14 [email protected] Send MoQT SUBSCRIBE_DONE when all objects are delivered. Tracks objects published and not yet published separately.
2024-06-13 [email protected] Refactor QuicBufferedPacketStore::EnqueuePacket to take a ReceivedPacketInfo instead of pieces of information from ReceivedPacketInfo.
2024-06-13 [email protected] Enhance the QUIC connection close details when peer address changed before handshake is confirmed, by adding the peer addresses before and after the change.
2024-06-12 [email protected] Refactor quic's RawPacketComposer to share more code for CMSG with GfeQuicGsoBatchWriter using the QuicMsgHdr class.
2024-06-12 [email protected] Fixes handling for DATA frames with padding in combination with Content-Length.
2024-06-12 [email protected] Adds test cases for OgHttp2Adapter as a client receiving a response with Content-Length and padding.
2024-06-12 [email protected] Fix MSAN failures in MoQT integration tests.
2024-06-11 [email protected] Implement a very basic MoQT simulator.
2024-06-11 [email protected] Split MoQT simulated endpoints into a separate header file.
2024-06-11 [email protected] Add `GeoHint` to `BlindSignToken`.
2024-06-11 [email protected] Set `header_decoding_delay_` before calling methods.
2024-06-10 [email protected] No public description
2024-06-10 [email protected] Update MoQT to draft-04
2024-06-07 [email protected] Split `QuicConnectionTracer` into two interfaces: - A `QuicPlatformConnectionContext` interface that get notified when a `QuicConnection` becomes active or inactive. - A new smaller `QuicConnectionTracer` that only contains PrintXXX methods.
2024-06-06 [email protected] Disable capsule parsing for failed requests
2024-06-05 [email protected] Introduce new QUICHE_PROTOCOL_FLAG of type uint32_t
2024-06-04 [email protected] Limit the number of port migrations a QUIC client will attempt upon path degrading signals. This is to prevent the client from migrating port too frequently, which may cause port exhaustion.
2024-06-04 [email protected] LSC: Move expensive variables on their last use to avoid copies.
2024-06-03 [email protected] Enabling rolled out flags.
2024-06-03 [email protected] Increase the (virtual) wait time in `QuicGenericSessionTest.LoseDatagrams` for the final datagrams to arrive.
2024-05-31 [email protected] No public description
2024-05-31 [email protected] No public description
2024-05-31 [email protected] Refactor QuicConnectionAlarms to take a delegate instead of a QuicConnection.
2024-05-31 [email protected] Remove non-default initcwnd capabilities from Bonnet
2024-05-30 [email protected] Add QuicSpdyStreamPeer::set_header_decoding_delay().
2024-05-29 [email protected] In preparation to adding acks to buffered initial packets: - Refactor several `QuicFramer` member functions into static functions, such that they can be called from `QuicDispatcher`. - Add a `QuicFramer::TryDecryptInitialPacketDispatcher` function for the `QuicDispatcher` to parse the packet number of INITIAL packets.
2024-05-28 [email protected] Fix Envoy compilation issues.
2024-05-28 [email protected] Fix build error in chromium.
2024-05-28 [email protected] Automated g4 rollback of changelist 635069412.
2024-05-28 [email protected] Enabling rolled out flags.
2024-05-28 [email protected] Measure QPACK delay in QuicSpdyStream.
2024-05-28 [email protected] Use human-readable BUG IDs in quic_interval_deque.h
2024-05-27 [email protected] Automated g4 rollback of changelist 637261323.
2024-05-25 [email protected] Upgrade to the latest protobuf edition
2024-05-24 [email protected] Log more information when a connection ID collision is detected in QUIC dispatcher.
2024-05-23 [email protected] No public description
2024-05-23 [email protected] gfe-relnote: Add a new connection option (kCDFR) to defer sending on the client.
2024-05-23 [email protected] Change QpackEncoderHeaderTable method signatures.
2024-05-22 [email protected] Resolve the following technical debt issue: OnAdjustBurstSize appears to be dead and not tested.
2024-05-22 [email protected] Replace QuicStreamPriority::Default with a default constructor.
2024-05-22 [email protected] Update RFC9204 references in comments.
2024-05-22 [email protected] Improve parametrization of QpackEncoderTest.
2024-05-22 [email protected] Improve QPACK encoding algorithm.
2024-05-21 [email protected] Support WebTransport-style priorities in QUIC
2024-05-21 [email protected] Resolve the following 85 technical "build-missing-std-includes" debt issues:
2024-05-21 [email protected] Resolve the following 58 technical "build-missing-std-includes" debt issues:
2024-05-21 [email protected] Resolve the following 94 technical "build-missing-std-includes" debt issues:
2024-05-21 [email protected] Resolve the following 82 technical "build-missing-std-includes" debt issues:
2024-05-21 [email protected] Resolve the following 85 technical "build-missing-std-includes" debt issues:
2024-05-21 [email protected] Resolve the following 88 technical "build-missing-std-includes" debt issues:
2024-05-21 [email protected] Resolve the following 98 technical "build-missing-std-includes" debt issues:
2024-05-21 [email protected] Resolve the following 97 technical "build-missing-std-includes" debt issues:
2024-05-21 [email protected] Resolve the following 93 technical "build-missing-std-includes" debt issues:
2024-05-21 [email protected] Resolve the following 87 technical "build-missing-std-includes" debt issues:
2024-05-21 [email protected] Set `gfe2_restart_flag_quic_opport_bundle_qpack_decoder_data5` to true on chromium.
2024-05-21 [email protected] Add QpackEncoderHeaderTable::FindHeaderName().
2024-05-20 [email protected] [snm] [optimization] Add recvmmsg to QBONE kernel interface.
2024-05-18 [email protected] Fix 23 ProtobufTransformer findings: * Upgrade to the latest protobuf edition (23 times)
2024-05-17 [email protected] Disable qbone_route_init_cwnd
2024-05-16 [email protected] Do not use C++20 designated initializers in oghttp2_session.cc.
2024-05-16 [email protected] Do not reset tunnels due to Stubby probe failure in quarantine mode.
2024-05-15 [email protected] Unifies `OgHttp2Session::DataFrameInfo` and `Http2VisitorInterface::DataFrameHeaderInfo`.
2024-05-15 [email protected] Introduces new `Http2VisitorInterface` methods for DATA frame generation.
2024-05-15 [email protected] Improve qpack_header_table_test.cc.
2024-05-15 [email protected] Initialize a struct's `std::optional` member to `std::nullopt` as default.

Change-Id: I88d9df1395fed15ee680ac1326fd1433ff84996c
Reviewed-on: https://chromium-review.googlesource.com/c/openscreen/+/6242923
Reviewed-by: Mark Foltz <[email protected]>
Commit-Queue: Mark Foltz <[email protected]>
6 files changed
tree: 5442629099d7542344c1ef70114b33b73735c500
  1. build_overrides/
  2. cast/
  3. discovery/
  4. docs/
  5. gni/
  6. infra/
  7. osp/
  8. platform/
  9. test/
  10. testing/
  11. third_party/
  12. tools/
  13. util/
  14. .clang-format
  15. .gitignore
  16. .gitmodules
  17. .gn
  18. .vpython3
  19. AUTHORS
  20. BUILD.gn
  21. codereview.settings
  22. DEPS
  23. LICENSE
  24. OWNERS
  25. PRESUBMIT.py
  26. PRESUBMIT_test_mocks.py
  27. README.md
README.md

Open Screen Library

The Open Screen Library implements the Open Screen Protocol, Multicast DNS and DNS-SD, and the Chromecast protocols (discovery, application control, and media streaming).

The library consists of feature modules that share a common platform API that must be implemented and linked by the embedding application.

The major feature modules in the library can be used independently and have their own documentation:

Getting the code

Installing depot_tools

Library dependencies are managed using gclient, from the depot_tools repo.

To get gclient, run the following command in your terminal:

    git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

Then add the depot_tools folder to your PATH environment variable.

Note that openscreen does not use other features of depot_tools like repo or drover. However, some git-cl functions do work, like git cl try, git cl format, git cl lint, and git cl upload.

Checking out code

From the parent directory of where you want the openscreen checkout (e.g., ~/my_project_dir), configure gclient and check out openscreen with the following commands:

    cd ~/my_project_dir
    gclient config https://chromium.googlesource.com/openscreen
    gclient sync

The first gclient command will create a default .gclient file in ~/my_project_dir that describes how to pull down the openscreen repository. The second command creates an openscreen/ subdirectory, downloads the source code, all third-party dependencies, and the toolchain needed to build things; and at their appropriate revisions.

Syncing your local checkout

To update your local checkout from the openscreen reference repository, just run

   cd ~/my_project_dir/openscreen
   git pull
   gclient sync

This will rebase any local commits on the remote top-of-tree, and update any dependencies that have changed.

Build setup

The following are the main tools are required for development/builds.

  • Installed by gclient automatically
    • Build file generator: gn (installed into buildtools/)
    • Code formatter: clang-format (installed into buildtools/)
    • Builder: ninja
    • Compiler/Linker: clang
  • Installed by you
    • JSON validator: yajsv
    • libstdc++
    • gcc
    • XCode

yajsv installation

  1. Install go from https://golang.org or your Linux package manager.
  2. go install github.com/neilpa/yajsv@latest

libstdc++ (Linux only)

Ensure that libstdc++ 8 is installed, as clang depends on the system instance of it. On Debian flavors, you can run:

   sudo apt-get install libstdc++-8-dev libstdc++6-8-dbg

XCode (Mac only)

You can install the XCode command-line tools only or the full version of XCode.

xcode-select --install

gcc (optional, Linux only)

Setting the gn argument is_clang=false on Linux enables building using gcc instead.

  mkdir out/debug-gcc
  gn gen out/debug-gcc --args="is_clang=false"

Note that g++ version 9 or newer must be installed. On Debian flavors you can run:

  sudo apt-get install gcc-9

Debug build

Setting the gn argument is_debug=true enables debug build.

  gn gen out/debug --args="is_debug=true"

gn configuration

Running gn args opens an editor that allows to create a list of arguments passed to every invocation of gn gen. gn args --list will list all of the possible arguments you can set.

  gn args out/debug

Building targets

We use the Open Screen Protocol demo application as an example, however, the instructions are essentially the same for all executable targets.

  mkdir out/debug
  gn gen out/debug             # Creates the build directory and necessary ninja files
  ninja -C out/debug osp_demo  # Builds the executable with ninja
  ./out/debug/osp_demo         # Runs the executable

The -C argument to ninja works just like it does for GNU Make: it specifies the working directory for the build. So the same could be done as follows:

  ./gn gen out/debug
  cd out/debug
  ninja osp_demo
  ./osp_demo

After editing a file, only ninja needs to be rerun, not gn. If you have edited a BUILD.gn file, ninja will re-run gn for you.

We recommend using autoninja instead of ninja, which takes the same command-line arguments but automatically parallelizes the build for your system, depending on number of processor cores, amount of RAM, etc.

Also, while specifying build targets is possible while using ninja, typically for development it is sufficient to just build everything, especially since the Open Screen repository is still quite small. That makes the invocation to the build system simplify to:

  autoninja -C out/debug

For details on running osp_demo, see its README.md.

Building all targets

Running ninja -C out/debug gn_all will build all non-test targets in the repository.

gn ls --type=executable out/debug will list all of the executable targets that can be built.

If you want to customize the build further, you can run gn args out/debug to pull up an editor for build flags. gn args --list out/debug prints all of the build flags available.

Building and running unit tests

  ninja -C out/debug openscreen_unittests
  ./out/debug/openscreen_unittests

Contributing changes

Open Screen library code should follow the Open Screen Library Style Guide.

This library uses Chromium Gerrit for patch management and code review (for better or worse). You will need to register for an account at chromium-review.googlesource.com to upload patches for review.

The following sections contain some tips about dealing with Gerrit for code reviews, specifically when pushing patches for review, getting patches reviewed, and committing patches.

Uploading a patch for review

The git cl tool handles details of interacting with Gerrit (the Chromium code review tool) and is recommended for pushing patches for review. Once you have committed changes locally, simply run:

  git cl format
  git cl upload

The first command will will auto-format the code changes using clang-format. Then, the second command runs the PRESUBMIT.py script to check style and, if it passes, a newcode review will be posted on chromium-review.googlesource.com.

If you make additional commits to your local branch, then running git cl upload again in the same branch will merge those commits into the ongoing review as a new patchset.

It's simplest to create a local git branch for each patch you want reviewed separately. git cl keeps track of review status separately for each local branch.

Addressing merge conflicts

If conflicting commits have been landed in the repository for a patch in review, Gerrit will flag the patch as having a merge conflict. In that case, use the instructions above to rebase your commits on top-of-tree and upload a new patchset with the merge conflicts resolved.

Tryjobs

Clicking the CQ DRY RUN button (also, confusingly, labeled COMMIT QUEUE +1) will run the current patchset through all LUCI builders and report the results. It is always a good idea get a green tryjob on a patch before sending it for review to avoid extra back-and-forth.

You can also run git cl try from the commandline to submit a tryjob.

Code reviews

Send your patch to one or more committers in the COMMITTERS file for code review. All patches must receive at least one LGTM by a committer before it can be submitted.

Submitting patches

After your patch has received one or more LGTM commit it by clicking the SUBMIT button (or, confusingly, COMMIT QUEUE +2) in Gerrit. This will run your patch through the builders again before committing to the main openscreen repository.

Additional resources