fix(webapp): RDP web form ignores port in "host:port" (non-default RDP port fails)
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 86/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- typescript
- Domain
- frontend
Research direction
Start in web-client-rdp.component.ts at WebClientRdpComponent.fetchParameters and compare its hostname handling with the SSH, VNC, and ARD flows using extractHostnameAndPort. Trace the resulting parameters into web-client.service.ts and generateProtocolToken. Done means an RDP hostname such as 127.0.0.1:64389 preserves port 64389 while a hostname without a port still uses the default.
Written by the indexing model from the issue text.
Description
Summary
The standalone web-app RDP form cannot connect to an RDP server on a non-default port. Unlike SSH/VNC/ARD, the RDP flow never calls extractHostnameAndPort, so the port is dropped and the default 3389 is appended.
Steps to reproduce
- Open an RDP session in the standalone web client (Gateway 2026.3.0).
- Hostname: 127.0.0.1:64389 (RDP reachable on 64389).
- Connect.
Actual
- Gateway rejects: "Destination in RDCleanPath PDU does not match destination in token" and "connect to RDP server: tcp://127.0.0.1:64389:3389 failed: failed to lookup destination address".
- Entering just 127.0.0.1 (default 3389) works.
Expected
host:port should be honored, like SSH/VNC/ARD.
Root cause
web-client-rdp.component.ts > fetchParameters:
host: hostname, // should be extractHostnameAndPort(hostname, DefaultRdpPort).hostname + pass port
Other protocols:
const extractedData = this.utils.string.extractHostnameAndPort(hostname, DefaultSshPort);
web-client.service.ts > generateProtocolToken:
destination: tcp://${fmt(host)}:${cp.port ?? getDefaultPort(protocol)}
RDP never sets cp.port -> always falls back to 3389.
Fix
In WebClientRdpComponent.fetchParameters, parse with extractHostnameAndPort(hostname, DefaultRdpPort) and set port, mirroring SSH/VNC/ARD. Optionally add an explicit port field.
[!NOTE]
Human-tuned, LLM-assisted content.
- Dominant language
- Rust
- Stars
- 161
- Forks
- 28
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 28
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Devolutions/devolutions-gateway
-
Difficulty 4/5 3-5 days Newbie friendliness 55/100
Devolutions/devolutions-gateway#1994 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 76/100
Devolutions/devolutions-gateway#1983 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
Devolutions/devolutions-gateway#1973 · 1 comment ·
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
Devolutions/devolutions-gateway#1930 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 55/100
Devolutions/devolutions-gateway#1788 ·
All issues in Devolutions/devolutions-gateway
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
gitbutlerapp/gitbutler#15998 · 1 comment ·
-
bug triage:deciding
Difficulty 1/5 Under an hour Newbie friendliness 88/100
open-telemetry/otel-arrow#4132 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100