Most of the RPD protocol errors (reason > 0x1000) would only be
triggered by coding errors in the client. A few of them can occur due
to server errors however. We should attempt to handle these cases.
There seems to have been confusion with regards to which exit code and
message was returned by rdesktop for the following cases:
* disconnected by admin
* logged out by admin
* disconnect by user
* logoff by user
Looking at Microsoft's official documentation as well as testing using
Windows Server 2008 R2, 2012 R2 and 2016 reveals that this commit fixes
this issue. They do now match the reasons sent by the server.
This commit will add a logging system to solve the problem that
one actually need to recompile rdesktop from source to enable
different debug logging.
- Same logging api for all kind of logging and messages to
end user.
- Adding -v for verbose output when running rdesktop.
- All messages are logged into a subject and with a type, eg:
logger(Keyboard, Notice, "Autos-electing %s based on locale.", locale);
- Debug logging is enabled trough a environment variable RDEKSTOP_DEBUG,
which specifies subjects of interest, comma separated. There is a special
subject named All which includes all subject for debug loggin. There is also
a simple logic opeartor '!' = NOT which can be used in combination like:
RDESKTOP_DEBUG=All,!Graphics,!Sound
Which would give debug log output for All subject except Graphics and Sound.
* The current return values have been selected pretty much without any
thought. Basically, the value 1 is used for all different kinds of
errors, except for a corner case where the server doesn't send a
RDP_PDU_DEACTIVATE in combination with a few special "reasons", where
the value 2 is used instead.
* rdesktop will currently also return with 2 if the user is closing
the rdesktop window, the same error as many other fatal errors, which
is somewhat strange.
* The main principle of my patch is to utilize more of the available
256 return codes. We are currently only using 3 values out of
256. This is bad; rdesktop should expose more information to the
caller about error conditions if it can.
Besides using the standardized exit codes for generic errors such as
EX_USAGE for command line usage errors, I've also exposed the
"extended disconnect reasons" from RDP. This allows for, for example,
to be able to distinguish between a logoff and a disconnect.
git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/rdesktop/trunk@1510 423420c4-83ab-492f-b58f-81f9feb106b5
change year in files
add missing docu for updated commandline-flags
update changelog
git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/trunk/rdesktop@827 423420c4-83ab-492f-b58f-81f9feb106b5
No more need to include anything in proto.h on BSDs
git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/trunk/rdesktop@798 423420c4-83ab-492f-b58f-81f9feb106b5
Fix spelling: syncronization -> synchronisation (synchronization would be
okay too, but I use the Australian/British spelling :))
git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/trunk/rdesktop@566 423420c4-83ab-492f-b58f-81f9feb106b5
RDPSND), in particular:
* channel layer takes care of virtual channel header
* split X dependent parts out of CLIPRDR, simplified IPC implementation
* initial RDPDR implementation
git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/trunk/rdesktop@431 423420c4-83ab-492f-b58f-81f9feb106b5
Clean up includes, fix a few compile warnings, avoid rdesktop.h depending
on X (at the expense of KeySym -> uint32 - maybe in the future we need a
better proto scheme).
git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/trunk/rdesktop@189 423420c4-83ab-492f-b58f-81f9feb106b5
arguments to function-type macros consistent with the C99 standard
git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/trunk/rdesktop@70 423420c4-83ab-492f-b58f-81f9feb106b5