Hi,
No sure if this is a bug in guacd or the intended behavior and I just don't use 
it correctly.
I use guacamole-common-js and the guacd docker image in my system. As part of 
the system, in my own js code, I check if login was successful. However, since 
version 1.5.4 it doesn't work. The issue is I don't get an error message when 
login isn't successful (but in 1.5.3 I did get it).
Looking at the code, I noticed that in 
src/libguac/user.c<https://github.com/apache/guacamole-server/blob/main/src/libguac/user.c#L181>
 the error message is only sent to client-> socket, but as far as I understand, 
because I am not logged in yet, my socket is client->pending_socket, so I never 
get the error message. I fixed this by changing this function to send to both 
sockets. So I copied the lines that send to 1 socket to also send to the other 
socket:

        guac_protocol_send_error(user->pending_socket, "Aborted. See logs.", 
status);
        guac_socket_flush(user->pending_socket);

Here is my implementation for the whole function:

void vguac_user_abort(guac_user* user, guac_protocol_status status,
        const char* format, va_list ap) {
    /* Only relevant if user is active */
    if (user->active) {
        /* Log detail of error */
        vguac_user_log(user, GUAC_LOG_ERROR, format, ap);
        /* Send error immediately, limit information given */
        guac_protocol_send_error(user->socket, "Aborted. See logs.", status);
        guac_socket_flush(user->socket);
        guac_protocol_send_error(user->pending_socket, "Aborted. See logs.", 
status);
        guac_socket_flush(user->pending_socket);
        /* Stop user */
        guac_user_stop(user);

    }
}

So my questions are: Is the current behavior what's intended and I am missing 
something? Or do you think that my change is a good fix?
Thanks!

Reply via email to