Cross-platform, C implementation of the IETF QUIC protocol, exposed to C, C++, C# and Rust.
Перейти к файлу
Gaurav Singh 1a32822791
Fuzz Handshake packet (#4074)
* receive packet

* populated the packet struct

* added ACK frame sending

* Initial ACK frame response sent

* added handshake decryption

* Completed handshake decryption

* finshed processing handshake packet

* fuzzed handshake packet and sent

* fixed Read key not available bug

* fixed a bug

* Testing to see if pipelines passes

* pop packet when decryption fail

* minor change

* only free packet after we are done processing

* attempt to fix the pipeline

* packet copy is sent

* recv event modified

* zeroed out send buffer

* minor change

* minor

* free packet event

* redefined few variables to fix memory leak

* minor change

* fixed recv datagram bug

* attempt to fix the pipeline

* test

* added few checks

* minor change

* minor change

* debug statement

* some debug statements for the pipeling

* minor change

* Few fixes

* minor

* added allocated check

* chain processing changed

* cleaned up code

* minor change

* minor change

* minor change

* Update src/tools/recvfuzz/recvfuzz.cpp

Co-authored-by: Nick Banks <nibanks@microsoft.com>

* minor code cleanups:

* mode changes

* minor

* made initial packet and handshake packet fuzzing work together

* minor change

* debug

* minor change

* minor change

* minor change

* Update src/tools/recvfuzz/recvfuzz.cpp

Co-authored-by: Nick Banks <nibanks@microsoft.com>

* Update src/tools/recvfuzz/recvfuzz.cpp

Co-authored-by: Nick Banks <nibanks@microsoft.com>

* Update src/tools/recvfuzz/recvfuzz.cpp

Co-authored-by: Nick Banks <nibanks@microsoft.com>

* Update src/tools/recvfuzz/recvfuzz.cpp

Co-authored-by: Nick Banks <nibanks@microsoft.com>

* Update src/tools/recvfuzz/recvfuzz.cpp

Co-authored-by: Nick Banks <nibanks@microsoft.com>

* Update src/tools/recvfuzz/recvfuzz.cpp

Co-authored-by: Nick Banks <nibanks@microsoft.com>

* Update src/tools/recvfuzz/recvfuzz.cpp

Co-authored-by: Nick Banks <nibanks@microsoft.com>

* Update src/tools/recvfuzz/recvfuzz.cpp

Co-authored-by: Nick Banks <nibanks@microsoft.com>

* Update src/tools/recvfuzz/recvfuzz.cpp

Co-authored-by: Nick Banks <nibanks@microsoft.com>

* Update src/tools/recvfuzz/recvfuzz.cpp

Co-authored-by: Nick Banks <nibanks@microsoft.com>

* minor change

* few cxplatevent changes

* few minor changes

* handle failure

* minor

* few minor things

* delete state buffer after every iteration

* minor

* minor

* test change

* minor change

* minor change

* added startms

* added result flag

* cleanup code and few debug statements

* cleanup

* Made packet as stack variable

* reverted change

* Update src/tools/recvfuzz/recvfuzz.cpp

Co-authored-by: Nick Banks <nibanks@microsoft.com>

* Update src/tools/recvfuzz/recvfuzz.cpp

Co-authored-by: Nick Banks <nibanks@microsoft.com>

* resolved comments

* fixed potential memory leak

* Update src/tools/recvfuzz/recvfuzz.cpp

Co-authored-by: Nick Banks <nibanks@microsoft.com>

* resolved comments

* New handshake each iteration

* removed unnecessary comment

* minor change

* minor change

* Some modifications

* fixed memory leaks

* minor change

* freed up send data

* revert

* revert

* minor change

* minor changes

* test

* add free send data

* rest

* modified implementation

* minor change

* few optimisations

* attempt to fix

* added ASAN option

* resolved comments

* minor refactoring

* minor change

---------

Co-authored-by: Nick Banks <nibanks@microsoft.com>
2024-03-12 18:39:38 +05:30
.azure new docker image (#4119) 2024-02-07 19:34:40 -05:00
.devcontainer
.docker Update ubuntu dockers for compliance (#4070) 2024-01-22 12:29:04 -08:00
.github Bump actions/download-artifact from 4.1.2 to 4.1.4 (#4172) 2024-03-02 12:09:12 -05:00
cmake
docs Update documentation on NEW_CONNECTION_INFO::ServerName (#4179) 2024-03-07 10:18:56 -05:00
scripts Fuzz Handshake packet (#4074) 2024-03-12 18:39:38 +05:30
src Fuzz Handshake packet (#4074) 2024-03-12 18:39:38 +05:30
submodules Bump submodules/googletest from `e4fdb87` to `e1a38bc` (#4184) 2024-03-09 17:09:37 -05:00
.dockerignore
.gitattributes
.gitignore Add DocFx Integration (#3833) 2023-09-19 16:48:18 -07:00
.gitmodules Submodule XDP (#3967) 2023-11-27 12:16:40 -05:00
.sscignore
CMakeLists.txt Default to Latest Build Tools on Windows (#4116) 2024-02-06 16:30:37 -05:00
CMakePresets.json
Cargo.toml Update Minor Version to v2.4 in main (#4086) 2024-01-26 17:46:57 -05:00
LICENSE
README.md Add documentation for getting started with the sample server-client app (#3985) 2023-12-05 16:32:34 -05:00
THIRD-PARTY-NOTICES
codecov.yml Configure Codecov to reduce noise (#3802) 2023-08-10 10:35:00 -07:00
msquic.kernel.sln

README.md

MsQuic logo

Documentation Perf Dashboard Build Status Test Status Stress Status codecov CodeQL CII Best Practices Discord crates.io nuget

MsQuic is a Microsoft implementation of the IETF QUIC protocol. It is cross-platform, written in C and designed to be a general purpose QUIC library. MsQuic also has C++ API wrapper classes and exposes interop layers for both Rust and C#.

Protocol Features

QUIC has many benefits when compared to existing "TLS over TCP" scenarios:

  • All packets are encrypted and handshake is authenticated with TLS 1.3.
  • Parallel streams of (reliable and unreliable) application data.
  • Exchange application data in the first round trip (0-RTT).
  • Improved congestion control and loss recovery.
  • Survives a change in the clients IP address or port.
  • Stateless load balancing.
  • Easily extendable for new features and extensions.

Library Features

MsQuic has several features that differentiates it from other QUIC implementations:

  • Optimized for client and server.
  • Optimized for maximal throughput and minimal latency.
  • Asynchronous IO.
  • Receive side scaling (RSS) support.
  • UDP send and receive coalescing support.

Documentation

Contributing

For information on contributing, please see our contribution guidelines. Feel free to take a look at our Good First Issues list if you're looking for somewhere to start. If you'd just like to talk, come chat with us on Discord.