summary refs log tree commit diff stats
path: root/chardev/char-socket.c
diff options
context:
space:
mode:
authorPavel Dovgalyuk <pavel.dovgalyuk@ispras.ru>2021-02-09 08:49:30 +0300
committerPaolo Bonzini <pbonzini@redhat.com>2021-02-25 14:14:33 +0100
commit6585b1627899a3fcaf1cf62bfb659b04371ca9ec (patch)
tree41b46149d4d116df3782d17a2da560e6a7e41f80 /chardev/char-socket.c
parent17ea26c2d80a695b4d3af9ae2eaa438095029773 (diff)
downloadfocaccia-qemu-6585b1627899a3fcaf1cf62bfb659b04371ca9ec.tar.gz
focaccia-qemu-6585b1627899a3fcaf1cf62bfb659b04371ca9ec.zip
char: don't fail when client is not connected
This patch checks that ioc is not null before
using it in tcp socket tcp_chr_add_watch function.

The failure occurs in replay mode of the execution,
when monitor and serial port are tcp servers,
and there are no clients connected to them:

-monitor tcp:127.0.0.1:8081,server,nowait
-serial tcp:127.0.0.1:8082,server,nowait

Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <161284977034.741841.12565530923825663110.stgit@pasha-ThinkPad-X280>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'chardev/char-socket.c')
-rw-r--r--chardev/char-socket.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/chardev/char-socket.c b/chardev/char-socket.c
index 9061981f6d..b7863b8aae 100644
--- a/chardev/char-socket.c
+++ b/chardev/char-socket.c
@@ -387,6 +387,9 @@ static ssize_t tcp_chr_recv(Chardev *chr, char *buf, size_t len)
 static GSource *tcp_chr_add_watch(Chardev *chr, GIOCondition cond)
 {
     SocketChardev *s = SOCKET_CHARDEV(chr);
+    if (!s->ioc) {
+        return NULL;
+    }
     return qio_channel_create_watch(s->ioc, cond);
 }