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) +{ + 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