From 42c63a5f2dbefc71e820f8b6561d37ed66c840e0 Mon Sep 17 00:00:00 2001 From: deadRabbit Date: Sun, 22 Feb 2026 14:16:18 +0100 Subject: [PATCH] Fix FreeRDP crash: echo VERSION param + upgrade guacd to latest - rdp.ts: dynamically acknowledge guacd's VERSION_x_y_z parameter by echoing it back in the connect instruction. Without this, guacd 1.5+ runs in legacy mode which crashes FreeRDP on modern Windows targets. Also add disable-glyph-caching and resize-method params. - docker-compose: upgrade guacd from 1.5.4 to latest to get FreeRDP 3.x which fixes known crash bugs with Windows 11 22H2+ / Server 2022 Co-Authored-By: Claude Sonnet 4.6 --- backend/src/websocket/rdp.ts | 11 +++++++++++ docker-compose.yml | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/backend/src/websocket/rdp.ts b/backend/src/websocket/rdp.ts index 81064a5..904ae0e 100644 --- a/backend/src/websocket/rdp.ts +++ b/backend/src/websocket/rdp.ts @@ -157,8 +157,19 @@ export async function rdpWebsocket(fastify: FastifyInstance) { 'enable-drive': 'false', 'create-drive-path': 'false', 'enable-printing': 'false', + 'disable-glyph-caching': 'true', + 'resize-method': 'display-update', }; + // Acknowledge whichever VERSION_x_y_z guacd advertises. + // Without this echo, guacd runs in legacy compatibility mode which + // can cause FreeRDP to crash on modern Windows targets. + for (const name of argNames) { + if (name.startsWith('VERSION_')) { + rdpParams[name] = name; + } + } + // 3. Connect with values guacd requested const argValues = argNames.map((name) => rdpParams[name] ?? ''); guacd.write(buildInstruction('connect', ...argValues)); diff --git a/docker-compose.yml b/docker-compose.yml index 1e98bc4..13a99ab 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -17,7 +17,7 @@ services: retries: 10 guacd: - image: guacamole/guacd:1.5.4 + image: guacamole/guacd:latest restart: unless-stopped environment: GUACD_LOG_LEVEL: debug