diff options
author | linzhecheng <linzhecheng@huawei.com> | 2018-05-29 10:52:40 +0800 |
---|---|---|
committer | Daniel P. Berrangé <berrange@redhat.com> | 2018-06-28 13:36:59 +0100 |
commit | 9fc53a10f81d3a9027b23fa810147d21be29e614 (patch) | |
tree | afd60bde8700bc77267cb3e5f9581c3710c3b407 /chardev/char-socket.c | |
parent | 00928a421d47f49691cace1207481b7aad31b1f1 (diff) |
socket: don't free msgfds if error equals EAGAIN
If we see EAGAIN, no data was sent over the socket, so we still have to
retry sending of msgfds next time.
Signed-off-by: linzhecheng <linzhecheng@huawei.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Diffstat (limited to 'chardev/char-socket.c')
-rw-r--r-- | chardev/char-socket.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/chardev/char-socket.c b/chardev/char-socket.c index 159e69c3b1..17519ec589 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -134,8 +134,8 @@ static int tcp_chr_write(Chardev *chr, const uint8_t *buf, int len) s->write_msgfds, s->write_msgfds_num); - /* free the written msgfds, no matter what */ - if (s->write_msgfds_num) { + /* free the written msgfds in any cases other than errno==EAGAIN */ + if (EAGAIN != errno && s->write_msgfds_num) { g_free(s->write_msgfds); s->write_msgfds = 0; s->write_msgfds_num = 0; |