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@xxxxxxxxxxxxxxx>
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel