On Wed, Nov 12, 2025 at 04:31:09PM -0600, Eric Blake wrote: > An upcoming patch needs to pass more than just sioc as the opaque > pointer to an AioContext; but since our AioContext code in general > (and its QIO Channel wrapper code) lacks a notify callback present > with GSource, we do not have the trivial option of just g_malloc'ing a > small struct to hold all that data coupled with a notify of g_free. > Instead, the data pointer must outlive the registered handler; in > fact, having the data pointer have the same lifetime as QIONetListener > is adequate. > > But the cleanest way to stick such a helper struct in QIONetListener > will be to rearrange internal struct members. And that in turn means > that all existing code that currently directly accesses > listener->nsioc and listener->sioc[] should instead go through > accessor functions, to be immune to the upcoming struct layout > changes. So this patch adds accessor methods qio_net_listener_nsioc() > and qio_net_listener_sioc(), and puts them to use. > > While at it, notice that the pattern of grabbing an sioc from the > listener only to turn around can call > qio_channel_socket_get_local_address is common enough to also warrant > the helper of qio_net_listener_get_local_address, and fix a copy-paste > error in the corresponding documentation. > > Signed-off-by: Eric Blake <[email protected]> > > --- > v2: new patch > v3: fix off-by-one, also add qio_net_listener_get_local_address > --- > include/io/channel-socket.h | 2 +- > include/io/net-listener.h | 42 +++++++++++++++++++++++++++++++++++++ > chardev/char-socket.c | 2 +- > io/net-listener.c | 27 ++++++++++++++++++++++++ > migration/socket.c | 4 ++-- > ui/vnc.c | 34 ++++++++++++++++++------------ > 6 files changed, 94 insertions(+), 17 deletions(-)
Reviewed-by: Daniel P. Berrangé <[email protected]> With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
