Skip to content

Conversation

@rhammonds-teleport
Copy link
Contributor

@rhammonds-teleport rhammonds-teleport commented Sep 26, 2025

Upgrade our IronRDP dependencies to the latest commit of IronRDP. In addition to general maintenance, this brings in a few fixes and features contributed by the desktop access team that we would like to take advantage of:

This PR also moves us to rust 1.86.0.

closes #54303

changelog: Fixed an issue causing desktop sessions abruptly terminate with "PDU error" message when opening certain applications that make use of hardware security keys.

@rhammonds-teleport rhammonds-teleport force-pushed the rhammonds/desktop-latest-ironrdp branch from 2762b73 to e09c1ec Compare September 29, 2025 21:00
Makefile Outdated
.PHONY: rdpclient
rdpclient:
ifeq ("$(with_rdpclient)", "yes")
@rustup -q override unset
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Previous revisions of the Makefile used rustup override set during the build process. These directory level overrides are evaluated before our toolchain file. Since these overrides are set for toolchain 1.81.0, they'll also see compile errors. Clearing the override will fix that.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't we tell people to undo that manually, so we can actually use the override feature for local development without having to modify the makefile?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's definitely not ideal, and the same thought crossed my mind, but... I'm thinking this choice is the lesser of two inconveniences. Without clearing the override, this change is going to break local builds for most (all?) Teleport devs once they pull it in. It's easy to fix, but it'll still be frustrating for the majority of devs (who aren't concerned with our Rust projects and just want their build to succeed). I would rather they have a seamless upgrade experience and instead shift any inconvenience the smaller group of devs who work in Rust.

I'm open to removing it. Just wanted to share my thoughts.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Especially if we backport this PR (or at least the "leave the global overrides alone" part) it's going to be a one time thing in response to an unmissable build error, so my vote is to get rid of the automatic (and hidden!) rustup override unset. Perhaps we can add a message if cargo build fails suggesting to try the command by hand?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fair enough. I added a pre-req to the rdp client and wasm targets that inspects the active toolchain and prints a big red warning if it doesn't match the version defined in the toolchain file. The message explains how to clear directory overrides as well.

build-ironrdp-wasm: ensure-wasm-deps
cargo build --package ironrdp --lib --target $(CARGO_WASM_TARGET) --release
@rustup -q override unset
RUSTFLAGS='--cfg getrandom_backend="wasm_js"' cargo build --package ironrdp --lib --target $(CARGO_WASM_TARGET) --release
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New rustflag required by getrandom for wasm targets.
https://docs.rs/getrandom/latest/getrandom/#opt-in-backends

@rhammonds-teleport rhammonds-teleport force-pushed the rhammonds/desktop-latest-ironrdp branch 3 times, most recently from b05ddab to b479632 Compare September 30, 2025 20:29
@rhammonds-teleport rhammonds-teleport force-pushed the rhammonds/desktop-latest-ironrdp branch 2 times, most recently from 0e18531 to fff9551 Compare October 6, 2025 18:19
@rhammonds-teleport rhammonds-teleport force-pushed the rhammonds/desktop-latest-ironrdp branch from 3eec4d0 to ee9abe3 Compare October 10, 2025 14:16
@rhammonds-teleport rhammonds-teleport force-pushed the rhammonds/desktop-latest-ironrdp branch from ee9abe3 to 8e1f4f2 Compare November 3, 2025 16:54
@rhammonds-teleport rhammonds-teleport marked this pull request as ready for review November 3, 2025 17:11
@socket-security
Copy link

socket-security bot commented Nov 3, 2025

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedcargo/​wasm-bindgen@​0.2.99 ⏵ 0.2.1018310093100100
Updatedcargo/​uuid@​1.16.0 ⏵ 1.18.110010093100100
Updatedcargo/​js-sys@​0.3.76 ⏵ 0.3.7810010093100100
Updatedcargo/​web-sys@​0.3.76 ⏵ 0.3.7810010093100100
Updatedcargo/​picky@​7.0.0-rc.11 ⏵ 7.0.0-rc.1710010093100100

View full report

Copy link
Contributor

@probakowski probakowski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎉

@rhammonds-teleport rhammonds-teleport force-pushed the rhammonds/desktop-latest-ironrdp branch from ab2c3d1 to fd4df2d Compare November 4, 2025 20:23
* resolve conflicting 'getrandom' dependencies.
* Add necessary RUSTFLAG env var to ironrdp-wasm compilation. Needed by 'getrandom' dependency to enable its wasm_js feature.
* Configure client to use remotefx codec.
* Bump rust toolchain version to 1.86.0.
* Unset existing rustup overrides before building rdpclient or ironrdp wasm module.
* Fix lint warnings after Rust toolchain upgrade.
…g if it does not match the version defined in our toolchain file.
@rhammonds-teleport rhammonds-teleport force-pushed the rhammonds/desktop-latest-ironrdp branch from fd4df2d to fd9b839 Compare November 5, 2025 14:51
@rhammonds-teleport rhammonds-teleport added this pull request to the merge queue Nov 5, 2025
Merged via the queue into master with commit 6377a5b Nov 5, 2025
44 of 45 checks passed
@rhammonds-teleport rhammonds-teleport deleted the rhammonds/desktop-latest-ironrdp branch November 5, 2025 16:00
mmcallister pushed a commit that referenced this pull request Nov 19, 2025
* * Update to latest commit of IronRDP.
* resolve conflicting 'getrandom' dependencies.
* Add necessary RUSTFLAG env var to ironrdp-wasm compilation. Needed by 'getrandom' dependency to enable its wasm_js feature.
* Configure client to use remotefx codec.
* Bump rust toolchain version to 1.86.0.
* Unset existing rustup overrides before building rdpclient or ironrdp wasm module.
* Fix lint warnings after Rust toolchain upgrade.

* Simplify BitmapFrame rendering and fix some rendering glitches that were revealed after updating IronRDP

* fix typo

* Try to determine the active Rust toolchain and print a helpful warning if it does not match the version defined in our toolchain file.
mmcallister pushed a commit that referenced this pull request Nov 20, 2025
* * Update to latest commit of IronRDP.
* resolve conflicting 'getrandom' dependencies.
* Add necessary RUSTFLAG env var to ironrdp-wasm compilation. Needed by 'getrandom' dependency to enable its wasm_js feature.
* Configure client to use remotefx codec.
* Bump rust toolchain version to 1.86.0.
* Unset existing rustup overrides before building rdpclient or ironrdp wasm module.
* Fix lint warnings after Rust toolchain upgrade.

* Simplify BitmapFrame rendering and fix some rendering glitches that were revealed after updating IronRDP

* fix typo

* Try to determine the active Rust toolchain and print a helpful warning if it does not match the version defined in our toolchain file.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Web UI Desktop Access : RDP client exited with an error: [payload error] PDU error

5 participants