quic/api/QuicTransportBase.cpp (14 lines): - line 242: // TODO: t64691045 change the closeImpl API to include both the sanitized and - line 299: // TODO: truncate the error code string to be 1MSS only. - line 886: // TODO: if the stream has an error and it is also paused we should - line 974: // TODO: add protection from calling "consume" in the middle of the peek - - line 1085: // TODO: Also listens to write event from libevent. Only schedule write when - line 2540: // TODO junqiw probing is not supported, so pathValidation==connMigration - line 2754: // TODO: this will become simpler when we change the underlying data - line 2756: // TODO: this approach will make the app unable to setReadCallback to - line 2758: // TODO: setReadCallback to nullptr closes the stream, so the app - line 3049: // TODO: Currently we will to get some stats first. Then we may filter - line 3130: // TODO should we throw or return Expected here? - line 3134: // TODO: We should let chain based GSO to use bufAccessor in the future as - line 3144: // TODO refactor transport settings to avoid having to update params twice. - line 3228: // TODO: This is temporary. Soon, we will add a transport parameter for knob quic/congestion_control/QuicCubic.cpp (13 lines): - line 64: * TODO: onPersistentCongestion entirely depends on how long a loss period is, - line 194: // TODO: is there a faster way to do cbrt? We should benchmark a few - line 196: // TODO: there is a tradeoff between precalculate and cache the result of - line 199: // TODO: both kDefaultCubicReductionFactor and kTimeScalingFactor are <1. - line 211: // TODO: instead of multiplying by 1000 three times, Chromium shifts by 30 - line 234: // TODO: should we also add a rttMin to timeElapsed? - line 273: // TODO: chromium has a limit on targetCwnd to be no larger than half of acked - line 319: // TODO: current code in detectLossPackets only gives back a loss event when - line 418: // TODO: Should we not increase cwnd if inflight is less than half of cwnd? - line 482: // TODO: we should experiment with subtract ackdelay from - line 522: // TODO: so our rtt is within 8us (kDelayIncreaseUpperBound) of the - line 564: // TODO: There is a tradeoff between getting an accurate Cwnd by frequently - line 569: // TODO: It's worth experimenting to use the larger one between cwndBytes_ and quic/state/QuicStreamManager.h (10 lines): - line 362: // TODO figure out a better interface here. - line 375: // TODO figure out a better interface here. - line 581: // TODO figure out a better interface here. - line 693: // TODO figure out a better interface here. - line 701: // TODO figure out a better interface here. - line 772: // TODO figure out a better interface here. - line 781: // TODO figure out a better interface here. - line 790: // TODO figure out a better interface here. - line 799: // TODO figure out a better interface here. - line 808: // TODO figure out a better interface here. quic/client/QuicClientTransport.cpp (10 lines): - line 237: // TODO (amsharma): add a "RetryPacket" QLog event, and log it here. - line 238: // TODO (amsharma): verify the "original_connection_id" parameter - line 324: // TODO: add path challenge and response - line 571: // TODO implement handler for it - line 703: // TODO: implement undo transport state on retry. - line 722: // TODO This sucks, but manually update the max packet size until we fix - line 736: // TODO this is another bandaid. Explicitly set the stateless reset token - line 749: // TODO: Make sure the alpn is the same, if not then do a full undo of the - line 1511: // TODO: we can get better receive time accuracy than this, with - line 1533: // TODO Supply v4 delay amount from somewhere when we want to tune this quic/congestion_control/Bbr.cpp (8 lines): - line 267: // TODO: We used to check if there is available bandwidth and rtt samples in - line 271: // TODO: enable Pacing and BBR together. - line 343: // TODO: isn't this a bug? But we don't do drainToTarget today. - line 366: // TODO: Another experiment here is that to maintain a min rtt sample since - line 371: // TODO: also consider connection being quiescent - line 641: // TODO: For Recovery in Startup, Chromium has another config option to set if - line 663: // TODO: ack aggregation expiration controlled by a config flag - line 667: // TODO: experiment with exit slow start on loss quic/server/QuicServerWorker.cpp (6 lines): - line 69: // TODO this totally doesn't work, we can't apply socket options before - line 406: // TODO: check version before looking at type - line 495: // TODO: make this constant time, the token might be secret, but we're - line 790: // TODO do we need to reset? - line 802: // TODO do we need to reset? - line 1133: // TODO: maxBatchSize is only a good start value when each transport does quic/server/state/ServerStateMachine.cpp (6 lines): - line 205: // TODO Validate active_connection_id_limit - line 269: // TODO: rename "canIgnorePathMTU" to "forciblySetPathMTU" - line 435: // TODO T33014230 subnet matching - line 867: // TODO: add path challenge and response - line 1133: // TODO implement the handler - line 1202: // TODO use new conn id, make sure the other endpoint has new conn id quic/api/QuicStreamAsyncTransport.cpp (6 lines): - line 45: // TODO: handle timeout for assigning stream id - line 301: // TODO: follow up on getSendTimeout() use, 0 indicates that no timeout is - line 324: // TODO: track written bytes to have it available after QUIC stream closure - line 333: // TODO: track read bytes to have it available after QUIC stream closure - line 364: // TODO: RST here? - line 497: // TODO: track bytesWritten, when buffer was split it may not be 0 quic/api/QuicTransportFunctions.cpp (5 lines): - line 280: // TODO: I think we should add an API that doesn't need a buffer. - line 404: // TODO: If we want to be able to write FIN out of order for DSR-ed streams, - line 635: // TODO: Remove UNLIKELY here when DSR is ready for test. - line 711: // TODO: this can happen because we clone RST_STREAM frames. Should we - line 1151: // TODO: This too needs to be switchable between regular and inplace builder. quic/codec/QuicReadCodec.cpp (5 lines): - line 163: // TODO actually drop the 0-rtt keys in addition to dropping packets. - line 243: // TODO better way of handling this (tests break without this) - line 256: // TODO: allow other connid lengths from the state. - line 314: // TODO better way of handling this (tests break without this) - line 340: // TODO: support key phase one. quic/state/SimpleFrameFunctions.cpp (5 lines): - line 47: // TODO junqiw - line 151: // TODO update source token, - line 167: // TODO vchynaro Ensure we ignore smaller subsequent retirePriorTos - line 200: // TODO vchynaro Implement retire_prior_to logic - line 270: // TODO: client impl quic/server/CCPReader.cpp (4 lines): - line 50: * TODO: in a future version, libccp should pass a pointer to the datapath - line 242: // TODO should this be initialized once in the constructor and re-used here? - line 253: // TODO if read buffer is re-used, shouldn't move it here - line 262: // TODO is this needed? quic/congestion_control/Bbr.h (4 lines): - line 50: // TODO: rate based startup mode - line 51: // TODO: send extra bandwidth probers when pipe isn't sufficiently full - line 108: // TODO: these should probably come in as part of a builder. but I'm not sure - line 169: // TODO: some of these do not have to be in public API. quic/codec/Decode.cpp (4 lines): - line 239: // TODO this is incomplete - line 241: // TODO we simply ignore ECN blocks in ACK-ECN frames for now. - line 574: // TODO change the error code - line 1013: // TODO Checking kMinInitialDestinationConnIdLength isn't necessary quic/dsr/Types.h (4 lines): - line 21: // TODO: I don't think i need client address here. - line 47: * TODO: Consider adding the type field here so that backend doesn't have to - line 50: * TODO: We can also send over the encoded QuicInteger of some of these values. - line 53: * TODO: Or even better: why don't I just send over the encoded short header quic/api/QuicPacketScheduler.cpp (4 lines): - line 792: // TODO: I'm not completely convinced d6d.outstandingProbes has been updated - line 817: // TODO: We can avoid the copy & rebuild of the header by creating an - line 832: // TODO: We can avoid the copy & rebuild of the header by creating an - line 879: // TODO: It's possible we write out a packet that's larger than the packet quic/client/handshake/ClientHandshake.cpp (3 lines): - line 56: // TODO: deal with clear text alert messages. It's possible that a MITM who - line 189: // TODO: we need to deal with HRR based rejection as well, however we don't - line 195: // TODO: support app retry of zero rtt data. quic/state/AckHandlers.cpp (3 lines): - line 59: // TODO: send error if we get an ack for a packet we've not sent t18721184 - line 138: // TODO also remove any stream data from the loss buffer. - line 445: // TODO it's not clear that we should be using the smallest and largest build/fbcode_builder/CMake/FBPythonBinary.cmake (3 lines): - line 50: # TODO: On Windows we require the Python libraries as well. - line 187: # TODO: generate a main executable that will invoke Python3 - line 420: # TODO: In the future it would be nice to support pre-compiling the source quic/congestion_control/NewReno.cpp (2 lines): - line 87: // TODO: I think this may be a bug in the specs. We should use - line 108: // TODO: Pacing isn't supported with NewReno quic/dsr/frontend/WriteFunctions.cpp (2 lines): - line 91: // TODO: (yangchi) Figure out how to calculate the - line 99: // TODO: Support empty write loop detection quic/client/state/ClientStateMachine.cpp (2 lines): - line 37: // TODO: don't carry server connection id over to the new connection. - line 149: // TODO Validate active_connection_id_limit quic/dsr/backend/DSRPacketizer.h (2 lines): - line 111: // TODO: it needs to be able to get the cache data. - line 112: // TODO: We are not going to maintain any QUIC related states. So if the cache quic/codec/QuicPacketRebuilder.h (2 lines): - line 19: * TODO: The cloning builder only clones stream data that has not already been - line 32: // TODO: Same as passing cipherOverhead into the CloningScheduler, this really quic/server/QuicServer.cpp (2 lines): - line 289: // TODO also update counters - line 342: // TODO workers_ (vector) is not protected against concurrent modifications quic/congestion_control/CongestionControlFunctions.h (2 lines): - line 32: // TODO: the error code is CWND_OVERFLOW but this function can totally be - line 43: // TODO: wrong error code quic/dsr/backend/DSRPacketizer.cpp (2 lines): - line 33: // TODO: InplaceQuicPacketBuilder in the future - line 102: // TODO: Why don't I just limit the batch size to reqGroup.size()? What can go quic/codec/QuicPacketBuilder.cpp (2 lines): - line 508: // TODO: change this back to generating random packet type after we rollout - line 687: // TODO: Get rid of these two wrapBuffer when Fizz::AEAD has a new interface quic/api/QuicTransportBase.h (2 lines): - line 182: // TODO: Maybe I should virtualize DSR related APIs and only implement in - line 942: // TODO: This is silly. We need a better solution. quic/codec/QuicWriteCodec.cpp (2 lines): - line 224: // TODO this is still extra work, as we end up duplicating these - line 709: // TODO add support for: RETIRE_CONNECTION_ID and NEW_TOKEN frames quic/server/handshake/DefaultAppTokenValidator.cpp (2 lines): - line 61: // TODO T33454954 Simplify ticket transport params. see comments in D9324131 - line 133: // TODO max ack delay, is this really necessary? quic/client/QuicClientAsyncTransport.cpp (2 lines): - line 37: // TODO: closeNow inside this callback may actually trigger gracefull close - line 45: // TODO: closeNow inside this callback may actually trigger gracefull close quic/happyeyeballs/QuicHappyEyeballsFunctions.cpp (2 lines): - line 32: // TODO: Do not wait for both IPv4 and IPv6 addresses to return before - line 42: // TODO: Support multiple addresses quic/state/StateData.h (2 lines): - line 394: // TODO: move to client only conn state. - line 413: // TODO: move to client only conn state. build/fbcode_builder/getdeps.py (2 lines): - line 834: # TODO: we could just go ahead and build it here, but I - line 904: # TODO: Break up complex function build/fbcode_builder/getdeps/platform.py (2 lines): - line 56: # TODO: Ideally, this function would inspect the current cgroup for any - line 88: # TODO: There may be some way to approximate an availability quic/d6d/QuicD6DStateFunctions.cpp (2 lines): - line 202: // TODO: reduce udpSendPacketLen below base once we can trust - line 221: // TODO: pace d6d probing when there's congestion build/fbcode_builder/CMake/FBCMakeParseArgs.cmake (2 lines): - line 49: # TODO: We aren't extremely strict about error checking for one-value - line 125: # TODO: Our caller still won't be able to distinguish between an empty quic/common/BufUtil.h (2 lines): - line 115: // TODO: OK, "insert" is a lie. Inside, we copy. But I'd like the BufWriter - line 123: // TODO: This is caller responsibility for now so the BufWriter conform with quic/server/CCPReader.h (1 line): - line 22: * TODO add error handling for this case quic/congestion_control/BbrTesting.cpp (1 line): - line 21: // TODO: This list should be trimmed down. build/fbcode_builder/getdeps/buildopts.py (1 line): - line 521: # TODO: `mkscratch` doesn't currently know how best to place things on quic/state/LossState.h (1 line): - line 18: // TODO: this also needs to be 3 numbers now... quic/fizz/server/handshake/AppToken.cpp (1 line): - line 37: // TODO plumb version build/fbcode_builder/docker_builder.py (1 line): - line 37: # system packages are installed. TODO: For users not defined in the quic/server/QuicServerTransport.cpp (1 line): - line 526: // TODO accumulate recent source tokens quic/congestion_control/Bandwidth.h (1 line): - line 68: // TODO: 1s may not be the best choice. It can overflow units. build/fbcode_builder/getdeps/dyndeps.py (1 line): - line 117: # TODO: audit that both source paths have the same inode number quic/congestion_control/BbrBandwidthSampler.cpp (1 line): - line 41: // TODO: If i'm smart enough, maybe we don't have to loop through the acked quic/state/TransportSettings.h (1 line): - line 56: * TODO: Please make sure QuicConnectionStateBase::D6DState::outstandingProbes quic/loss/QuicLossFunctions.cpp (1 line): - line 101: // TODO: check for the stream is in Open or HalfClosedLocal state, the quic/server/handshake/ServerHandshake.cpp (1 line): - line 242: // TODO: Get rid of appDataReadBuf_ once we do not need EndOfEarlyData quic/codec/QuicPacketRebuilder.cpp (1 line): - line 47: // TODO: if PMTU changes between the transmission of the original packet and quic/state/QuicStreamFunctions.h (1 line): - line 27: * TODO: move to dsr directory. quic/fizz/client/handshake/FizzClientHandshake.cpp (1 line): - line 74: // TODO T32658838 better API to disable early data for current connection quic/logging/QLoggerTypes.cpp (1 line): - line 537: // TODO: Sad. I wanted moved all the string into the dynamic but this function quic/tools/tperf/TperfDSRSender.cpp (1 line): - line 22: // TODO remove this when we make instructions match the request. quic/codec/QuicPacketBuilder.h (1 line): - line 45: // TODO: Temporarly let this interface be reusable across different concrete quic/QuicException.h (1 line): - line 109: // TODO: There's some dynamic string construction happening in this (related to quic/state/PacketEvent.h (1 line): - line 29: * TODO: Current PacketNum is an alias to uint64_t. We should just make quic/state/QuicStreamFunctions.cpp (1 line): - line 468: // TODO: remove this when we implement EOED for quic/common/BufUtil.cpp (1 line): - line 106: // TODO replace users with trimStartAtMost quic/state/QuicStreamManager.cpp (1 line): - line 358: // TODO when we can rely on C++17, this is a good candidate for try_emplace. quic/client/state/ClientStateMachine.h (1 line): - line 64: // TODO Save TicketTransportParams here instead of in QuicClientTransport quic/congestion_control/Copa2.cpp (1 line): - line 127: // TODO Which min RTT should we use? quic/codec/Types.h (1 line): - line 178: // TODO should this be a small_vector? build/fbcode_builder/getdeps/builder.py (1 line): - line 122: # TODO: Introduce some sort of defaults config that can select by build/fbcode_builder/getdeps/copytree.py (1 line): - line 75: TODO: I'd like to either extend this or add a variant that build/fbcode_builder/getdeps/py_wheel_builder.py (1 line): - line 158: # TODO: process the subdirectories of data_dir_name quic/congestion_control/Copa.cpp (1 line): - line 302: // TODO See if we should go to slowStart here quic/fizz/handshake/FizzTransportParameters.h (1 line): - line 57: // TODO all the 40s here in the appenders are very likely not the optimal