fix(server): recognize the Initiate Multitransport Response on the message channel - #1964
Open
Greg Lamberson (glamberson) wants to merge 1 commit into
Conversation
…ssage channel handle_message_channel_data unconditionally decoded every PDU on the MCS message channel as an AutoDetectRspPdu, per a comment claiming the channel "currently carries only the auto-detect response". That's no longer accurate: once a server sends an Initiate Multitransport Request, the client answers on this same channel with an Initiate Multitransport Response (MS-RDPBCGR 2.2.15.2) if it could not establish the sideband transport. MultitransportResponsePdu already has full Encode/Decode support in ironrdp-pdu, but had zero consumers anywhere in ironrdp-server, so every such response failed to decode (its securityHeader carries SEC_TRANSPORT_RSP, not SEC_AUTODETECT_RSP) and was dropped as an "Unhandled MCS message channel PDU" warning instead of being recognized as the ordinary protocol traffic it is. Extracted the dispatch into decode_message_channel_pdu, tried against both PDU types (auto-detect first, since it is by far the more common one) instead of just one, and given handle_message_channel_data a proper Multitransport arm that logs success/failure at debug level instead of warning on legitimate input.
Greg Lamberson (glamberson)
had a problem deploying
to
llm-providers
September 13, 2026 14:47 — with
GitHub Actions
Error
Greg Lamberson (glamberson)
had a problem deploying
to
llm-providers
September 13, 2026 14:48 — with
GitHub Actions
Error
Greg Lamberson (glamberson)
deployed
to
llm-providers
September 13, 2026 14:51 — with
GitHub Actions
Active
Contributor
|
This pull request may overlap with #1954. Both PRs extend ironrdp-server's UDP multitransport support. This one adds decoding and logging of the Initiate Multitransport Response PDU on the MCS message channel; This notice is advisory only. Automated review continues as usual, and how these pull requests relate is for maintainers and authors to decide. Note LLM-assisted content (no human feedback). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
handle_message_channel_data unconditionally decoded every PDU received on the MCS message channel as an AutoDetectRspPdu, per a comment claiming the channel "currently carries only the auto-detect response." That is no longer accurate: once a server sends an Initiate Multitransport Request, the client answers on this same channel with an Initiate Multitransport Response (MS-RDPBCGR 2.2.15.2) to report whether it could establish the sideband transport.
MultitransportResponsePdu already has full Encode/Decode support in ironrdp-pdu (with success()/abort() constructors), but has zero consumers anywhere in ironrdp-server. In practice every such response from a real client failed to decode as AutoDetectRspPdu (its securityHeader carries SEC_TRANSPORT_RSP, not SEC_AUTODETECT_RSP) and was dropped with an "Unhandled MCS message channel PDU" warning: legitimate protocol traffic logged as an error.
Reproduced against a real Windows client (mstsc) that offered UDP multitransport but could not establish it: the raw bytes it sent decode exactly as MultitransportResponsePdu { security_header: TRANSPORT_RSP, request_id, hr_response: E_ABORT }.
Changes
Test plan
cargo xtask check fmt/lints/tests/typos/locks all pass.