feat(client): enable reliable UDP transport - #1777
feat(client): enable reliable UDP transport#1777Marc-André Moreau (mamoreau-devolutions) wants to merge 4 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
Prepares reliable RDP-UDP2 sidebands to reuse primary TLS certificate policy while retaining ActiveX’s truthful UDP-disabled behavior.
Changes:
- Extracts reusable rustls certificate configuration.
- Adds UDP TLS policy forwarding and current-thread tests.
- Makes ActiveX UDP settings immutable after connection setup.
Reviewed changes
Copilot reviewed 13 out of 14 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
crates/ironrdp-tls/src/rustls.rs |
Reuses shared rustls configuration. |
crates/ironrdp-tls/src/rustls_verifier.rs |
Adds shared certificate verifier construction. |
crates/ironrdp-tls/src/lib.rs |
Exposes verifier support conditionally. |
crates/ironrdp-tls/Cargo.toml |
Adds the verifier-only feature. |
crates/ironrdp-testsuite-extra/tests/rdpeudp_tokio.rs |
Tests callback forwarding and current-thread operation. |
crates/ironrdp-rdpeudp-tokio/src/transport.rs |
Adds sideband TLS settings. |
crates/ironrdp-rdpeudp-tokio/src/tls.rs |
Uses shared TLS configuration. |
crates/ironrdp-rdpeudp-tokio/src/multitransport.rs |
Forwards sideband TLS settings. |
crates/ironrdp-rdpeudp-tokio/src/lib.rs |
Exports UdpTlsConfig. |
crates/ironrdp-rdpeudp-tokio/README.md |
Documents transport scope and strict validation. |
crates/ironrdp-rdpeudp-tokio/Cargo.toml |
Adds the public TLS dependency. |
crates/ironrdp-activex/src/control.rs |
Seals the UDP policy with connection settings. |
crates/ironrdp-activex/README.md |
Documents current UDP limitations. |
Cargo.lock |
Records the new dependency edge. |
aad8335 to
a3979c7
Compare
a3979c7 to
f142765
Compare
f142765 to
343718c
Compare
343718c to
24e1d80
Compare
24e1d80 to
ebee7fa
Compare
|
This pull request is Please split it into focused pull requests that can each be reviewed on their own. When the parts build on each other, stacked pull requests let you open each one on top of the last without waiting for the one below to merge. Stacks require every branch to live in this repository, so from a fork, please open separate pull requests instead. Automated review resumes once the change is below the |
6fe2038 to
de3c648
Compare
fadc12b to
c656380
Compare
dbf56e2 to
729452f
Compare
Keep DisableUdpTransport truthful while client-side UDP routing remains incomplete. The setting now follows connection-setting mutability, reports its effective disabled value, and rejects enablement with E_NOTIMPL. Document the reliable-only lower stack and unsupported carrier paths.
Integrate the merged RDPEUDP2 and RDPEMT stack with direct client connections and route Soft-Sync-selected DVC traffic over the sideband. Keep unsupported carriers on TCP, fall back when bootstrap fails, and renew transport security and correlation state during reconnects. Map the ActiveX compatibility property to the working transport.
Share multitransport response policy between connection phases and keep the post-activation handler exhaustive when UDP support is disabled.
Decode and encode the Length, Padding, and QueryBuffer fields required by MS-RDPEFS instead of rejecting them as trailing channel data. Add value-free failure categories so native ActiveX diagnostics identify the rejecting protocol layer without exposing packet contents.
729452f to
0927237
Compare
Integrate the merged RDPEUDP2 and RDPEMT stack with direct client connections and route Soft-Sync-selected DVC traffic over the sideband.
Keep unsupported carriers on TCP, fall back when bootstrap fails, and renew transport security and correlation state during reconnects. Map the ActiveX compatibility property to the working transport.
Consume the complete MS-RDPEFS QueryInformation request body so valid Length, Padding, and QueryBuffer fields do not disconnect native ActiveX sessions. Add value-free failure categories for diagnosing transport and protocol fallback without exposing packet contents.