On 6/30/2010 10:12 PM, Robert Seward wrote:
On Wed, Jun 30, 2010 at 1:20 PM, Murtaza Munaim<mur...@gmail.com> wrote:On 6/29/2010 12:00 AM, Murtaza Munaim wrote:On 6/28/2010 8:19 PM, Robert Seward wrote:On Mon, Jun 28, 2010 at 5:46 PM, Murtaza Munaim<mur...@gmail.com> wrote:On 6/23/2010 9:42 AM, Jay Sorg wrote:Hey guys. So I was looking at the code for xrdp. I know I need to have the connection between sesman and xrdp be maintained for the entire session, and then have sesman kill the session when xrdp sees a user disconnect. I could go looking through all the code, but I was just wondering if someone knew where in the code xrdp connects/disconnects from sesman. ThanksHi Murtaza, The connection goes up in file xrdp/xrdp_mm.c function xrdp_mm_connect It uses an object called struct trans to talk to sesman. trans_connect is the call to do the connect. The connection goes down in xrdp_mm_process_login_response self->delete_sesman_trans = 1; will cause the disconnect later. Then on the sesman side, I have to look more. JayHey Jay. Let me know what you remember/find from the sesman side. Also, the enviornment I was running xrdp before was using xrdp-0.4.0~dfsg as the main xrdp server. I downloaded the cvs version of xrdp, and did the standard make && make install and it worked fine, the compiling and installing at least. Then when I rdesktop'ed like I usually would have. As it was connecting, it would get to "connecting to 127.0.0.1 5910". Then I would get an error - problem connecting. Is there a debug or verbose mode to xrdp or something of the like? What could be different between the two version to break it? -Murtaza ------------------------------------------------------------------------------ This SF.net email is sponsored by Sprint What will you do first with EVO, the first 4G phone? Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first _______________________________________________ xrdp-devel mailing list xrdp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/xrdp-develHey Murtaza, I don't know if you are interested, but I did pretty much want you are trying to do. However, the changes were done to xrdp 0.4.1, and there are a number of other changes that I made that you may or may not want. I haven't had time to try to submit all the patches against the latest CVS, but you can take what I have if you want. RobertRobert, Could you briefly summarize the changes you made? And send me a tarball of your patches? That would be awesome. Thanks -MurtazaHey Guys. Robert: If you have time, could you send me the patches you have written so I can see what you did? Thanks a bunchAttached is the tar file. Here are the changes (as best as I can tell - I have been hacking on this for a while, so my memory is a bit dim on some of it): - Optionally disconnect a session after a specified idle time (idle time means no input from the client). Controlled by the 'max_idle_time' global option in xrdp.ini. - Make the port over which xrdp and sesman communicate configurable. - Limit the number of sessions that a user can have active at one time. Controlled by the 'MaxSessionsPerUser' option in sesman.ini under 'Sessions'. - Add an option to allow/disallow sharing of a session by multiple logins from the same user. Controlled by the 'AllowSharing' option in sesman.ini under 'Sessions'. - Add a minimum X server color depth. Certain programs (notably Firefox) don't work with a 8 bpp. However, I wanted to use 8 bpp on the RDP side for bandwidth efficiency. VNC will do the translation from one color depth to another. This option is controlled by the 'MinServerDepth' option in sesman.ini under 'Xvnc'. - Added options to control the ports used for VNC. These are controlled by the options 'MinDisplay' and 'MaxDisplay' in sesman.ini under 'Globals'. - Allow the RDP client to use 8 bit unicode. - Do conversions of text and rectangles to bitmaps. One of these is controlled by the client capability, but the other is hardcoded. I was having a problem with a particularly crippled client, and the only way to make it work was to basically only send bitmaps. This only effects the startup screen. However, the code I wrote doesn't handle large text - it makes the bitmap too large, which causes nothing to be sent to the client. - Because the above, I changed the checks on bitmap size to be a little more tolerant (but still OK in RDP). - I had problems with the child VNC/X-server processes not being killed reliably, so I changed things a bit to make that work better. The original xrdp had a separate program that just babysat those child processes. I made it to where that program isn't necessary. - Fixed a problem where xrdp would go into an infinite loop on certain malformed input. - If the client screen width or height is zero, shove in a width and height that is acceptable. - Print the IP address of bad logins in the sesman log file. - Redid locking in sesman a little. It looked to me like there were some conditions that wouldn't work, so I fixed it. - I vaguely recall I had problems with sesman not waiting properly for the X server to start, so I changed how it waits a bit. - I took out the login window - I only allow auto login. This should probably be configurable. I hope this helps. Robert
Yeah this will really help. I could probably look at the code and figure it out, but I wanted to know how you added the disconnect functionality in the first place, like what did you do? I know xrdp can tell when the session is disconnected, using the function libxrdp_disconnect, and sesman has the capability to kill a session using sig_sesman_session_end, but how did you relay this information to one another? Could you maybe point out in the code what you did?
Thanks alot. -Murtaza
smime.p7s
Description: S/MIME Cryptographic Signature
------------------------------------------------------------------------------ This SF.net email is sponsored by Sprint What will you do first with EVO, the first 4G phone? Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________ xrdp-devel mailing list xrdp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/xrdp-devel