2
0
Эх сурвалжийг харах

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>
linzhecheng 7 жил өмнө
parent
commit
9fc53a10f8
1 өөрчлөгдсөн 2 нэмэгдсэн , 2 устгасан
  1. 2 2
      chardev/char-socket.c

+ 2 - 2
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;