While running the interop tool I hit a debug assert when trying to frame a path challenge. There wasn't enough room in the packet, and that was because the Path's allowance wasn't enough to fit the frame. This PR updates the code to check the limit before hand, but it is also more resilient to any other unforeseen issues as well (by cleaning up the builder).
These test cases cover fuzzing the Connection ID (CID) in the initial packet, as well the optional Token field.
Changes are passing in both TAEF and gtest.
This moves the handshake start (ETW) event to right before we initialize TLS. This means we no longer include waiting for the server to give us a certificate or doing DNS on the client as part of this phase. It essentially purely tracks doing the TLS and network parts.
This PR fixes some random crashes we were seeing in the timer wheel. The problem was that a connection could sometimes get migrated to a new worker after it was uninitialized. This would cause the connection to get added to the new worker's timer wheel, and then promptly freed (returned to a lookaside list).
The fix is to make sure not to ever migrate to a new worker if the connection was already uninitialized. To ensure this, the UpdateWorker flag is cleared in the connection's uninitialize function. A few debug asserts are added to catch any possible future regressions.
This PR updates the submodules to the latest commit and changes the openssl submodule to the Akamai fork (which is what is currently in PR to merge into openssl master). This openssl branch is much more up to date than the previous one and contains some fixes that were causing openssl to crash.
Cleans up and onboards spinquic to CI.
Disabled v4 unreachable test on Windows.
Adds resumption test cases.
Adds resumption support for schannel.
Fixes some OACR warnings.
This PR updates tls_openssl.c to the newest OpenSSL APIs for QUIC. It also gets OpenSSL building with cmake.
Also contains a push of the latest internal code changes.
This PR integrates test support to Azure Pipeline builds, currently using stub TLS. Other TLS implementations will have tests come online in the future.
Updates the Linux logging story so that it can collect all the same logs as Windows (now including the ETW events). Also adds some info as to how to collect logs for a repro.
Updates the build files to CMake (instead of VS project files and Linux makefiles). Also adds googletest submodule for test dependency.
Corresponding internal PR: 3965727