[Spice-devel] [PATCH spice-streaming-agent 1/3] Introduce InboundMessages for the StreamPort class
Frediano Ziglio
fziglio at redhat.com
Mon Oct 8 12:37:41 UTC 2018
>
> Wraps the deserialization of the received messages in an InboundMessages
> class. The class is created with the deserialized header and the raw
> data of the message. A template function get_payload() returns the
> struct of the concrete message. The function is specialized for each
> incoming message.
>
> While this leaves the responsibility to call the get_payload() function
> with the message according to the type in the header to the caller, the
> solution preserves the efficiency of the original implementation without
> introducing too much complexity around the separation of the code.
>
> Signed-off-by: Lukáš Hrázký <lhrazky at redhat.com>
Rebasing I did this change:
@@ -31,6 +31,12 @@ StartStopMessage InboundMessage::get_payload<StartStopMessage>()
msg.start_streaming = data[0]; // num_codecs
+ const int max_codecs = header.size - 1; /* see struct StreamMsgStartStop */
+ if (data[0] > max_codecs) {
+ throw std::runtime_error("num_codecs=" + std::to_string(data[0]) +
+ " > max_codecs=" + std::to_string(max_codecs));
+ }
+
for (size_t i = 1; i <= data[0]; ++i) {
msg.client_codecs.insert((SpiceVideoCodecType) data[i]);
}
Frediano
More information about the Spice-devel
mailing list