@samitouri / QOSamiQemu / commits / 5c102ac9f1

chardev: Consolidate yank registration

There's currently five places where the yank function is being registered and they all come right before tcp_chr_new_client(). Fold them into it. Signed-off-by: Fabiano Rosas <farosas@suse.de> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 20260302092225.4088227-8-peter.maydell@linaro.org [PMM: rebased] Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

Fabiano Rosas committed Mar 6, 2026 at 09:01 UTC 5c102ac9f18b24bf1552bd43ca4864b4ce331a3f
1 file changed +6 -25
chardev/char-socket.c
+6 -25
@@ -905,6 +905,12 @@ static int tcp_chr_new_client(Chardev *chr, QIOChannelSocket *sioc)
905 s->sioc = sioc;
906 object_ref(OBJECT(sioc));
907
908 + if (s->registered_yank) {
909 + yank_register_function(CHARDEV_YANK_INSTANCE(chr->label),
910 + char_socket_yank_iochannel,
911 + QIO_CHANNEL(sioc));
912 + }
913 +
914 if (s->do_nodelay) {
915 qio_channel_set_delay(s->ioc, false);
916 }
@@ -943,11 +949,6 @@ static int tcp_chr_add_client(Chardev *chr, int fd)
949 }
950 tcp_chr_change_state(s, TCP_CHARDEV_STATE_CONNECTING);
951 tcp_chr_set_client_ioc_name(chr, sioc);
946 - if (s->registered_yank) {
947 - yank_register_function(CHARDEV_YANK_INSTANCE(chr->label),
948 - char_socket_yank_iochannel,
949 - QIO_CHANNEL(sioc));
950 - }
952 ret = tcp_chr_new_client(chr, sioc);
953 object_unref(OBJECT(sioc));
954 return ret;
@@ -962,11 +963,6 @@ static void tcp_chr_accept(QIONetListener *listener,
963
964 tcp_chr_change_state(s, TCP_CHARDEV_STATE_CONNECTING);
965 tcp_chr_set_client_ioc_name(chr, cioc);
965 - if (s->registered_yank) {
966 - yank_register_function(CHARDEV_YANK_INSTANCE(chr->label),
967 - char_socket_yank_iochannel,
968 - QIO_CHANNEL(cioc));
969 - }
966 tcp_chr_new_client(chr, cioc);
967 }
968
@@ -982,11 +978,6 @@ static int tcp_chr_connect_client_sync(Chardev *chr, Error **errp)
978 object_unref(OBJECT(sioc));
979 return -1;
980 }
985 - if (s->registered_yank) {
986 - yank_register_function(CHARDEV_YANK_INSTANCE(chr->label),
987 - char_socket_yank_iochannel,
988 - QIO_CHANNEL(sioc));
989 - }
981 tcp_chr_new_client(chr, sioc);
982 object_unref(OBJECT(sioc));
983 return 0;
@@ -1002,11 +993,6 @@ static void tcp_chr_accept_server_sync(Chardev *chr)
993 tcp_chr_change_state(s, TCP_CHARDEV_STATE_CONNECTING);
994 sioc = qio_net_listener_wait_client(s->listener);
995 tcp_chr_set_client_ioc_name(chr, sioc);
1005 - if (s->registered_yank) {
1006 - yank_register_function(CHARDEV_YANK_INSTANCE(chr->label),
1007 - char_socket_yank_iochannel,
1008 - QIO_CHANNEL(sioc));
1009 - }
996 tcp_chr_new_client(chr, sioc);
997 object_unref(OBJECT(sioc));
998 }
@@ -1180,11 +1166,6 @@ static void tcp_chr_connect_client_async(Chardev *chr)
1166 tcp_chr_change_state(s, TCP_CHARDEV_STATE_CONNECTING);
1167 sioc = qio_channel_socket_new();
1168 tcp_chr_set_client_ioc_name(chr, sioc);
1183 - if (s->registered_yank) {
1184 - yank_register_function(CHARDEV_YANK_INSTANCE(chr->label),
1185 - char_socket_yank_iochannel,
1186 - QIO_CHANNEL(sioc));
1187 - }
1169 /*
1170 * Normally code would use the qio_channel_socket_connect_async
1171 * method which uses a QIOTask + qio_task_set_error internally