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