An example of a session from start using sesman and Xvnc.

1 – An rdp client connects to the rdp server. The encryption level is negotiated, the keys are exchanged and the client and server capabilities are exchanged. The client chooses the bpp and the width and height of the screen.

2 – The client is presented with a simple screen where a module is selected. The user selected sesman and a username and password are entered and ok button is clicked.

3 – Libvnc.so module is loaded and a tcp connection is made to the ip in xrdp.ini file. This is usually 127.0.01. The username and password and client width, height and bpp are sent to sesman. sesman then uses pam(pam_userpass) to authenticate the user. if the user is ok, sesman looks for a running session with the width, height, and bpp. if sesman find one, it returns the display its running on. if not, a new Xvnc is started with the users width, height and bpp.

4 – Linvnc.so connects the the display returns in step 3.