Repository navigation
Enhance RDP features and expose additional WASM options - #1764
Tô Nguyễn Đức Mạnh (tonguyenducmanh) wants to merge 14 commits into
Conversation
…ên trình duyệt mong muốn render cả con trỏ chuột cho tiện thao tác
Enhance RDP features, improve documentation, and update dependencies
|
Automated review will not run because this contributor is not yet eligible under the automation policy. Contributors become eligible after one qualifying IronRDP pull request is merged into |
Benoît Cortier (CBenoit)
left a comment
There was a problem hiding this comment.
Thank you for the PR.
As per the design principle documented here, I think these should be provided as extensions instead of be part of the common abstraction.
Hi! I'm changed code to add flag in session.rs follow design-philosophy. |
There was a problem hiding this comment.
The PR adds four browser-facing session builder options (pointer_software_rendering, desktop_scale_factor, performance_flags, timezone_info) via the extension mechanism, as the maintainer requested, and wires them into connector::Config. The design and protocol framing are sound: DST-date-zeroed TimezoneInfo is a valid 'no DST' encoding and the bias sign convention comment matches MS-RDPBCGR. Independent verification confirmed three concrete defects: timezone name truncation counts Unicode scalars instead of UTF-16 code units, so astral characters overflow the fixed 64-byte PDU name fields and shift subsequent Client Info PDU fields (the encoder pads but never truncates); the invalid performance_flags fallback stores an empty flag set while logging and previously shipping a non-empty default; and desktop_scale_factor silently floors fractional values and forwards values the connector itself treats as out of range. Remaining candidates are low severity: an inaccurate doc-comment premis…
The desktop_scale_factor, performance_flags and timezone_info extensions accepted any JS number and truncated it on the way to the wire. - desktop_scale_factor now honours the MS-RDPBCGR 2.2.1.13.1.2 window of 100% to 500%, keeps 0 as the "server picks" default, and rejects a fractional devicePixelRatio instead of flooring 1.5 to the out-of-range value 1. - performance_flags falls back to PerformanceFlags::default() rather than an empty set, so a type-invalid value keeps the behaviour the client advertised before the extension existed. - Timezone names are truncated on UTF-16 code units, not char scalars. StandardName and DaylightName are fixed at 64 bytes and the encoder only pads them, so an astral-plane name overflowed the field and shifted the rest of the Client Info PDU. build_config keeps its original signature and the four values are assigned on the returned config, which drops the too_many_arguments suppression and unbreaks the test helper that was still calling the old signature. Also states the DST trade-off accurately and covers the new pure helpers with tests.
|
Benoît Cortier (@CBenoit) hi, i'm changed the code follow your review. |
No description provided.