Skip to content

ldm 3.4.10-1

Choose a tag to compare

@MAButz MAButz released this 07 Oct 07:43
· 2 commits to master since this release

Options a client picks by the FreeRDP it actually has, for a fleet halfway through a migration.

Some clients still run FreeRDP 2, others already run 3, and one RDP_OPTIONS line cannot serve them: the two do not take the same spellings. FreeRDP 3 rejects what it does not know by printing its entire help and exiting before it connects — which on a client looks like the session ending the instant the greeter disappears, with nothing said anywhere the user can see.

Measured against 3.15.0, these are refused:

Written for FreeRDP 2 FreeRDP 3
/cert-ignore /cert:ignore
/kbd:0x00000407, /kbd:German, /kbd:de /kbd:layout:0x407
-sec-nla /sec:nla:off or /sec:rdp
/gfx-h264:avc420 /gfx:avc420
/tls-seclevel:0 /tls:seclevel:0
+async-input, +glyph-cache gone, drop them

/cert-ignore is in practically every configuration written for FreeRDP 2, so rewriting RDP_OPTIONS for the new clients breaks every old one — and the usual answer, a per-client section naming every machine, means knowing in advance which is which, which is exactly what nobody has during a migration.

RDP3_OPTIONS and RDP2_OPTIONS are read only by a client about to run that major version, with RDP3_OPTIONS_<screen> beside the RDP_OPTIONS_<screen> that already existed:

RDP3_OPTIONS_07     that version, that screen
RDP3_OPTIONS        that version
RDP_OPTIONS_07      that screen, whatever the version
RDP_OPTIONS         everybody

The first that exists wins outright rather than adding to the one below it — a line still carrying /cert-ignore would defeat the point. The client decides for itself: the binary's name settles the version in the normal case, and where it does not (an admin pointing RDP_XFREERDP_BIN at something of their own) the binary is asked once with --version. So no machine has to be listed anywhere, and the RDP_OPTIONS line the old fleet depends on is never touched.

A half-migrated site therefore needs two lines and no inventory:

RDP_OPTIONS="/cert-ignore /sound +clipboard /f"      # unchanged
RDP3_OPTIONS="/cert:ignore /sound +clipboard /f"     # only clients with FreeRDP 3

Also: the variable that won is written to the log with its value. The first question when a session dies immediately is which options it started with, and until now the log said only "Verwende Standard RDP_OPTIONS".

See lts.conf(5) in ltsp 6.3.26-1, which carries the full list — including the long list of options that did survive, because the useful answer to "will my line break" is mostly no, with those few exceptions.