[Spice-devel] [vd_agent] udscs: Clarify the udscs_read_callback() documentation
Francois Gouget
fgouget at codeweavers.com
Mon Nov 7 09:51:44 UTC 2016
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 <fgouget at codeweavers.com>
More information about the Spice-devel
mailing list