Add retry when write fail occured 23/300623/2
authorJunkyeong Kim <jk0430.kim@samsung.com>
Mon, 30 Oct 2023 06:37:39 +0000 (15:37 +0900)
committerJunkyeong Kim <jk0430.kim@samsung.com>
Mon, 30 Oct 2023 06:44:35 +0000 (15:44 +0900)
When write get -1, if error is EINTR or EAGAIN, try again.

Change-Id: I98385a07311e8925358c4ad1038ced2028705387
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
src/cbhm.c

index 8bae588..d578769 100644 (file)
@@ -224,7 +224,14 @@ _data_source_send(void *data, struct wl_data_source *source, const char *mime_ty
        DBG("[CBHM][SENDING] ====>> fd(%d), len(%d), data(%s)\n", fd, size_ret, buf);
        while (len_written < size_ret) {
                ret = write(fd, cur_buf, len_remained);
-               if (ret == -1) break;
+               if (ret == -1) {
+                       if (errno == EINTR || errno == EAGAIN) {
+                               continue;
+                       } else {
+                               ERR("[CBHM]_data_source_send : write fail.(%d) %m\n", errno);
+                               break;
+                       }
+               }
                cur_buf += ret;
                len_written += ret;
                len_remained -= ret;