You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
xrdp-proprietary/xrdp
Ben Cohen 3b5b7a5935 UDS file deleted after first connection
If you run xrdp with a Unix Domain Socket (UDS) for the port specified in
/etc/xrdp/xrdp.ini then the first connection succeeds but subsequent
connections fail.  In fact the UDS is deleted from the filesystem as soon
as the first connection is established.

Test case:

1. Edit /etc/xrdp/xrdp.ini to set "port=/var/run/xrdp-local.socket".

2. Restart xrdp.

3. Run the following.  When rdesktop starts up and the logon dialog is
   displayed, press "Cancel".

   sudo socat TCP-LISTEN:12345 UNIX-CONNECT:/var/run/xrdp-local.socket &
   rdesktop localhost:12345

4. Run the following:

    sudo socat TCP-LISTEN:12346 UNIX-CONNECT:/var/run/xrdp-local.socket &
    rdesktop localhost:12346

Expected behaviour: rdesktop starts up and displays the logon dialog.
Observed behaviour: rdesktop exits with "ERROR: Connection closed" and
                    socat exits with "No such file or directory.

This is because in the child process after forking, xrdp_listen_fork()
calls trans_delete() which deletes the UDS.  Simply commenting out the
g_file_delete() and g_free() fixes this, but that isn't a proper solution
because trans_delete() is called from elsewhere where the UDS might no
longer be wanted.

Fix by adding a function trans_delete_from_child() that frees and clears
listen_filename before calling trans_delete(), and call the new function
from xrdp_listen_fork().

(Workaround: set "fork=false" in /etc/xrdp/xrdp.ini, because
trans_delete() is then not called.)
7 years ago
..
Makefile.am Make xrdp.ini to be dynamic for each operating system 7 years ago
ad24b.bmp
ad256.bmp Drop exec permission of non executable files 9 years ago
cursor0.cur
cursor1.cur
czech.txt
funcs.c Eliminate APP_CC and DEFAULT_CC 8 years ago
lang.c Eliminate APP_CC and DEFAULT_CC 8 years ago
rdp-scan-codes.txt More spelling fixes found by codespell and aspell 9 years ago
sans-10.fv1 Drop exec permission of non executable files 9 years ago
xrdp.c fix for zombie processes sometimes appearing 7 years ago
xrdp.h xrdp: exit main process with failure status if listen failed (daemon mode) 8 years ago
xrdp.ini.in Make xrdp.ini to be dynamic for each operating system 7 years ago
xrdp24b.bmp
xrdp256.bmp Drop exec permission of non executable files 9 years ago
xrdp_bitmap.c remove empty crc16.h file 7 years ago
xrdp_cache.c remove empty crc16.h file 7 years ago
xrdp_encoder.c xrdp: xrdp_encoder.c fix compile when XRDP_RFXCODEC is not defined 7 years ago
xrdp_encoder.h Eliminate APP_CC and DEFAULT_CC 8 years ago
xrdp_font.c Eliminate APP_CC and DEFAULT_CC 8 years ago
xrdp_keyboard.ini Update xrdp_keyboard.ini 7 years ago
xrdp_listen.c UDS file deleted after first connection 7 years ago
xrdp_login_wnd.c xrdp: accept full path for ls_background_image 8 years ago
xrdp_logo.bmp made login screen fully customizable 11 years ago
xrdp_mm.c fix potential fd leak 7 years ago
xrdp_painter.c Eliminate APP_CC and DEFAULT_CC 8 years ago
xrdp_process.c Eliminate APP_CC and DEFAULT_CC 8 years ago
xrdp_region.c Eliminate APP_CC and DEFAULT_CC 8 years ago
xrdp_types.h add session_info 8 years ago
xrdp_wm.c fix potential fd leak 7 years ago
xrdpwin.c Eliminate APP_CC and DEFAULT_CC 8 years ago