Re: [PATCH spice-streaming-agent v4 2/2] Implement handling of error messages from the server

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> 
> Signed-off-by: Lukáš Hrázký <lhrazky@xxxxxxxxxx>
> ---
>  src/spice-streaming-agent.cpp | 26 +++++++++++++++++++++++---
>  1 file changed, 23 insertions(+), 3 deletions(-)
> 
> diff --git a/src/spice-streaming-agent.cpp b/src/spice-streaming-agent.cpp
> index ee57920..954d1b3 100644
> --- a/src/spice-streaming-agent.cpp
> +++ b/src/spice-streaming-agent.cpp
> @@ -137,10 +137,30 @@ static void handle_stream_capabilities(uint32_t len)
>      }
>  }
>  
> -static void handle_stream_error(uint32_t len)
> +static void handle_stream_error(size_t len)
>  {
> -    // TODO read message and use it
> -    throw std::runtime_error("got an error message from server");
> +    if (len < sizeof(StreamMsgNotifyError)) {
> +        throw std::runtime_error("Received NotifyError message size " +
> std::to_string(len) +
> +                                 " is too small (smaller than " +
> +
> std::to_string(sizeof(StreamMsgNotifyError))
> + ")");
> +    }
> +
> +    struct : StreamMsgNotifyError {
> +        uint8_t msg[1024];
> +    } msg;
> +
> +    size_t len_to_read = std::min(len, sizeof(msg) - 1);
> +
> +    read_all(&msg, len_to_read);
> +    msg.msg[len_to_read - sizeof(StreamMsgNotifyError)] = '\0';
> +
> +    syslog(LOG_ERR, "Received NotifyError message from the server: %d -
> %s\n",
> +        msg.error_code, msg.msg);
> +
> +    if (len_to_read < len) {
> +        throw std::runtime_error("Received NotifyError message size " +
> std::to_string(len) +
> +                                 " is too big (bigger than " +
> std::to_string(sizeof(msg)) + ")");
> +    }
>  }
>  
>  static void read_command_from_device(void)

Can you extend commit message?
For instance why throwing exception and why the choice of 1024 limit.

Frediano
_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]