[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