On Wed, 2 Nov 2016, Jonathon Jongsma wrote:
[...]
> >  /* Callbacks with this type will be called when a complete message has been
> > - * received. The callback may call udscs_destroy_connection, in which case
> > - * *connp must be made NULL (which udscs_destroy_connection takes care of).
> > + * received. The callback is responsible for free()-ing the data buffer. It
> > + * may call udscs_destroy_connection, in which case *connp must be made 
> > NULL
> > + * (which udscs_destroy_connection takes care of).
> >   */
> >  typedef void (*udscs_read_callback)(struct udscs_connection **connp,
> >      struct udscs_message_header *header, uint8_t *data);
> 
> 
> >From reading the code, it looks like the data buffer should *NOT* be
> freed if udscs_destroy_connection() is called,

Right. This API is a mess. It's also inconsistent with virtio-port.h 
where vdagent_virtio_port_read_callback() must not free the data buffer 
and must not call vdagent_virtio_port_destroy() to destroy the port!


By the way, did I miss something or does udscs_destroy_connection() 
really leak conn->data.buf if conn->read_callback is NULL?
(not that one would want read_callback to be NULL)


-- 
Francois Gouget <fgou...@codeweavers.com>
_______________________________________________
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to