I absolutely agree about the sesman implementation. It needs a bit of tidying up. I'll put it on the longer-term list of things to look at.
The mixed declaration/statements were introduced in C99, so personally I think that should be OK. I can't think anyone will be running a compiler on our target platforms which doesn't support it.
I'm posting this developer info here in response to a query on the xrdp-questions thread.
Should I put this on the wiki maybe?
As far as I can tell, the current state of affairs with SCP V1 is as follows:-
It will also be obvious to the reader that SCP V1 is pretty code-heavy and hence has a high maintenance overhead. For example, there's no need for the protocol to handle password changes. The protocol should simply be wrapping the PAM dialog and xrdp should be prompting the user as appropriate. This would also allow for proper 2FA to be introduced with barely any changes to our code.
Other badly needed system functions are reconnection and NLA. Both of these will require a dialog between xrdp and sesman. Having a simpler protocol will make it easier to get these implemented.
My current plan is to remove the unused SCP V1 code in the near future (i.e. when we get #1708 merged). This should make the existing libscp a little easier to navigate.
A replacement protocol needs to satisfy the following requirements:-
unlinkto debug. Maybe unlink needs to be retried sometime.
+glyph-cache. I guess something has been changed on the FreeRDP side.