Re: [PATCH spice-streaming-agent v2 4/5] Handle capabilities

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

 



> On 20 Feb 2018, at 15:30, Frediano Ziglio <fziglio@xxxxxxxxxx> wrote:
> 
> Do not bail if the server is attempting to communicate some extensions
> but just ignore as at the moment we support none.
> 
> Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx>
> ---
> src/spice-streaming-agent.cpp | 31 +++++++++++++++++++++++++++++++
> 1 file changed, 31 insertions(+)
> 
> diff --git a/src/spice-streaming-agent.cpp b/src/spice-streaming-agent.cpp
> index d72c30b..9547e49 100644
> --- a/src/spice-streaming-agent.cpp
> +++ b/src/spice-streaming-agent.cpp
> @@ -40,6 +40,8 @@
> 
> using namespace spice::streaming_agent;
> 
> +static size_t write_all(int fd, const void *buf, const size_t len);
> +
> static ConcreteAgent agent;
> 
> struct SpiceStreamFormatMessage
> @@ -77,6 +79,7 @@ static int have_something_to_read(int timeout)
>     return 0;
> }
> 
> +static int read_stream_capabilities(uint32_t len);
> static int read_stream_start_stop(uint32_t len);
> 
> static int read_command_from_device(void)
> @@ -96,6 +99,8 @@ static int read_command_from_device(void)
>     }
> 
>     switch (hdr.type) {
> +    case STREAM_TYPE_CAPABILITIES:
> +        return read_stream_capabilities(hdr.size);
>     case STREAM_TYPE_START_STOP:
>         return read_stream_start_stop(hdr.size);
>     }
> @@ -124,6 +129,32 @@ static int read_stream_start_stop(uint32_t len)
>     return 1;
> }
> 
> +static int read_stream_capabilities(uint32_t len)

It says “read” but reads and writes.

Do you have many other pending patches that introduce new messages?

This messes with the outgoing message refactoring I have in flight, but also with the incoming refactoring that Lukas is looking at.

So my guess is this one should go first (it’s relatively small). Or if it’s OK to wait a little, be rewritten on top of my series, but I’m not too sure how to do that in the spirit of what Lukas wants to do for input refactoring.


> +{
> +    uint8_t caps[STREAM_MSG_CAPABILITIES_MAX_BYTES];
> +
> +    if (len > sizeof(caps)) {
> +        throw std::runtime_error("capability message too long");
> +    }
> +    int n = read(streamfd, caps, len);
> +    if (n != len) {
> +        throw std::runtime_error("read command from device FAILED -- read " + std::to_string(n) +
> +                                 " expected " + std::to_string(len));
> +    }
> +
> +    // we currently do not suppor extensions so just reply so
> +    StreamDevHeader hdr = {
> +        STREAM_DEVICE_PROTOCOL,
> +        0,
> +        STREAM_TYPE_CAPABILITIES,
> +        0
> +    };
> +    if (write_all(streamfd, &hdr, sizeof(hdr)) != sizeof(hdr)) {
> +        throw std::runtime_error("error writing capabilities");
> +    }
> +    return 1;
> +}
> +
> static int read_command(bool blocking)
> {
>     int timeout = blocking?-1:0;
> -- 
> 2.14.3
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel@xxxxxxxxxxxxxxxxxxxxx
> https://lists.freedesktop.org/mailman/listinfo/spice-devel

_______________________________________________
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]