core-util: Add retry logic when pa_close returns Broken pipe error 13/251913/6 accepted/tizen/unified/20210122.021828 submit/tizen/20210121.064451
authorJaechul Lee <jcsing.lee@samsung.com>
Thu, 21 Jan 2021 01:42:48 +0000 (10:42 +0900)
committerJaechul Lee <jcsing.lee@samsung.com>
Thu, 21 Jan 2021 04:55:36 +0000 (13:55 +0900)
[Version] 13.0-27
[Issue Type] DF210105-01173

Change-Id: I721343b86fe3607ff3b71b63b088da4dca8fe792
Signed-off-by: Jaechul Lee <jcsing.lee@samsung.com>
packaging/pulseaudio.spec
src/pulsecore/core-util.c

index a0851ca..457dda6 100644 (file)
@@ -3,7 +3,7 @@
 Name:             pulseaudio
 Summary:          Improved Linux sound server
 Version:          13.0
-Release:          26
+Release:          27
 Group:            Multimedia/Audio
 License:          LGPL-2.1
 URL:              http://pulseaudio.org
index e63a676..1929ed1 100644 (file)
@@ -2477,14 +2477,40 @@ void *pa_will_need(const void *p, size_t l) {
     return (void*) p;
 }
 
+#ifdef __TIZEN__
+int pa_safe_close_pipe(int fd) {
+    int r, retry;
+
+    for (retry = 5; retry > 0; retry--) {
+        r = pa_close(fd);
+        if (!r)
+            break;
+
+        pa_log("pa_close() failed while trying to close fd(%d) retry(%d): %s",
+                fd, retry, pa_cstrerror(errno));
+        pa_msleep(50);
+    }
+
+    return r;
+}
+#endif
+
 void pa_close_pipe(int fds[2]) {
     pa_assert(fds);
 
     if (fds[0] >= 0)
+#ifdef __TIZEN__
+        pa_assert_se(pa_safe_close_pipe(fds[0]) == 0);
+#else
         pa_assert_se(pa_close(fds[0]) == 0);
+#endif
 
     if (fds[1] >= 0)
+#ifdef __TIZEN__
+        pa_assert_se(pa_safe_close_pipe(fds[1]) == 0);
+#else
         pa_assert_se(pa_close(fds[1]) == 0);
+#endif
 
     fds[0] = fds[1] = -1;
 }