GUACAMOLE-422: Add client timezone to handshake.

This commit is contained in:
Nick Couchman 2019-03-24 21:36:44 -04:00
parent b90e566e1b
commit f70aa4939f
2 changed files with 32 additions and 0 deletions

View File

@ -89,6 +89,13 @@ struct guac_user_info {
*/ */
int optimal_resolution; int optimal_resolution;
/**
* The timezone of the remote system. If the client does not provide
* a specific timezone then this will be NULL. The format of the timezone
* is the standard tzdata naming convention.
*/
const char** timezone;
}; };
struct guac_user { struct guac_user {

View File

@ -385,6 +385,31 @@ int guac_user_handle_connection(guac_user* user, int usec_timeout) {
char** image_mimetypes = guac_copy_mimetypes(parser->argv, parser->argc); char** image_mimetypes = guac_copy_mimetypes(parser->argv, parser->argc);
user->info.image_mimetypes = (const char**) image_mimetypes; user->info.image_mimetypes = (const char**) image_mimetypes;
/* Get client timezone */
if (guac_parser_expect(parser, socket, usec_timeout, "timezone")) {
/* Log error */
guac_user_log_handshake_failure(user);
guac_user_log_guac_error(user, GUAC_LOG_DEBUG,
"Error reading \"timezone\"");
guac_parser_free(parser);
return 1;
}
/* Check number of timezone arguments */
if (parser->argc < 1) {
guac_user_log(user, GUAC_LOG_ERROR, "Received \"timezone\" instruction "
"lacked required arguments.");
guac_parser_free(parser);
return 1;
}
/* Store timezone */
char** timezone = parser->argv[0];
user->info.timezone = (const char**) timezone;
/* Get args from connect instruction */ /* Get args from connect instruction */
if (guac_parser_expect(parser, socket, usec_timeout, "connect")) { if (guac_parser_expect(parser, socket, usec_timeout, "connect")) {