[Spice-devel] [PATCH spice-gtk 3/6] spice-channel: replace the xmit buf by a queue of SpiceOutMsg-s

Hans de Goede hdegoede at redhat.com
Sat Dec 3 01:53:15 PST 2011


On 12/02/2011 05:44 PM, Marc-André Lureau wrote:
> Hi
> On Thu, Dec 1, 2011 at 4:48 PM, Hans de Goede<hdegoede at redhat.com>  wrote:
>> +    if (buffered) {
>> +        spice_msg_out_ref(out);
>> +        g_queue_push_tail(&c->xmit_queue, out);
> Have you actually checked that the msg is not modified/reused by any
> of the callers?

Yes I checked, all the callers immediately unref it after calling
spice_msg_out_send(), so I was thinking about making it take ownership too.

But there is one exception in channel-smartcard.c, which delays the unref
until it gets a reply back from the server, which is why I decided to not go
with my make spice_msg_out_send take ownership plan. I must admit I did not
think about the possibility that channel-smartcard.c may be re-using it and
that indeed would be bad, let me check ...

Ok, no problem, channel-smartcard.c puts the  SpiceOutMsg into a struct
together with a message type, and all it cares about after the
spice_msg_out_send is the message-type, so the code can be changed to
unref the SpiceOutMsg directly after spice_msg_out_send, at which
point spice_msg_out_send can be changed to take ownership.

I'll do a revised patchset with this change.

> Instead of adding a reference, we should take ownership of the msg,
> that would be more obvious that it's not supposed to be touched once
> you call the send function.



More information about the Spice-devel mailing list