summaryrefslogtreecommitdiffstats
path: root/x11vnc/connections.c
diff options
context:
space:
mode:
Diffstat (limited to 'x11vnc/connections.c')
-rw-r--r--x11vnc/connections.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/x11vnc/connections.c b/x11vnc/connections.c
index 61e59b4..5e5ebd4 100644
--- a/x11vnc/connections.c
+++ b/x11vnc/connections.c
@@ -657,6 +657,12 @@ void client_gone(rfbClientPtr client) {
if (unixpw_in_progress && unixpw_client) {
if (client == unixpw_client) {
unixpw_in_progress = 0;
+ screen->permitFileTransfer = unixpw_file_xfer_save;
+ if ((filexfer = unixpw_tightvnc_xfer_save)) {
+#ifdef LIBVNCSERVER_WITH_TIGHTVNC_FILETRANSFER
+ rfbRegisterTightVNCFileTransferExtension();
+#endif
+ }
unixpw_client = NULL;
copy_screen();
}
@@ -2155,6 +2161,15 @@ enum rfbNewClientAction new_client(rfbClientPtr client) {
unixpw_in_progress = 1;
unixpw_client = client;
unixpw_login_viewonly = 0;
+
+ unixpw_file_xfer_save = screen->permitFileTransfer;
+ screen->permitFileTransfer = FALSE;
+ unixpw_tightvnc_xfer_save = filexfer;
+ filexfer = 0;
+#ifdef LIBVNCSERVER_WITH_TIGHTVNC_FILETRANSFER
+ rfbUnregisterTightVNCFileTransferExtension();
+#endif
+
if (client->viewOnly) {
unixpw_login_viewonly = 1;
client->viewOnly = FALSE;