diff --git a/src/protocols/rdp/user.c b/src/protocols/rdp/user.c index 6ded2eb8..af597dbd 100644 --- a/src/protocols/rdp/user.c +++ b/src/protocols/rdp/user.c @@ -122,3 +122,12 @@ int guac_rdp_user_file_handler(guac_user* user, guac_stream* stream, return 0; } +int guac_rdp_user_leave_handler(guac_user* user) { + + guac_rdp_client* rdp_client = (guac_rdp_client*) user->client->data; + + guac_common_cursor_remove_user(rdp_client->display->cursor, user); + + return 0; +} + diff --git a/src/protocols/rdp/user.h b/src/protocols/rdp/user.h index fe94d3e8..99b8c578 100644 --- a/src/protocols/rdp/user.h +++ b/src/protocols/rdp/user.h @@ -27,6 +27,11 @@ */ guac_user_join_handler guac_rdp_user_join_handler; +/** + * Handler for leaving users. + */ +guac_user_leave_handler guac_rdp_user_leave_handler; + /** * Handler for received simple file uploads. This handler will automatically * select between RDPDR and SFTP depending on which is available and which has diff --git a/src/protocols/ssh/user.c b/src/protocols/ssh/user.c index fc9913c9..4a224a0b 100644 --- a/src/protocols/ssh/user.c +++ b/src/protocols/ssh/user.c @@ -82,3 +82,12 @@ int guac_ssh_user_join_handler(guac_user* user, int argc, char** argv) { } +int guac_ssh_user_leave_handler(guac_user* user) { + + guac_ssh_client* ssh_client = (guac_ssh_client*) user->client->data; + + guac_common_cursor_remove_user(ssh_client->term->cursor, user); + + return 0; +} + diff --git a/src/protocols/ssh/user.h b/src/protocols/ssh/user.h index b9e99400..8287fed4 100644 --- a/src/protocols/ssh/user.h +++ b/src/protocols/ssh/user.h @@ -17,8 +17,8 @@ * under the License. */ -#ifndef GUAC_VNC_USER_H -#define GUAC_VNC_USER_H +#ifndef GUAC_SSH_USER_H +#define GUAC_SSH_USER_H #include "config.h" @@ -29,5 +29,10 @@ */ guac_user_join_handler guac_ssh_user_join_handler; +/** + * Handler for leaving users. + */ +guac_user_leave_handler guac_ssh_user_leave_handler; + #endif diff --git a/src/protocols/telnet/user.c b/src/protocols/telnet/user.c index 45855bde..427112b6 100644 --- a/src/protocols/telnet/user.c +++ b/src/protocols/telnet/user.c @@ -78,3 +78,13 @@ int guac_telnet_user_join_handler(guac_user* user, int argc, char** argv) { } +int guac_telnet_user_leave_handler(guac_user* user) { + + guac_telnet_client* telnet_client = + (guac_telnet_client*) user->client->data; + + guac_common_cursor_remove_user(telnet_client->term->cursor, user); + + return 0; +} + diff --git a/src/protocols/telnet/user.h b/src/protocols/telnet/user.h index 0968f679..910f0cb5 100644 --- a/src/protocols/telnet/user.h +++ b/src/protocols/telnet/user.h @@ -29,5 +29,10 @@ */ guac_user_join_handler guac_telnet_user_join_handler; +/** + * Handler for leaving users. + */ +guac_user_leave_handler guac_telnet_user_leave_handler; + #endif