From: Jaechul Lee Date: Thu, 21 Jan 2021 01:42:48 +0000 (+0900) Subject: core-util: Add retry logic when pa_close returns Broken pipe error X-Git-Tag: accepted/tizen/unified/20210122.021828^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a9a3c747f1e125746aa5d2df6582214a0777e001;p=platform%2Fupstream%2Fpulseaudio.git core-util: Add retry logic when pa_close returns Broken pipe error [Version] 13.0-27 [Issue Type] DF210105-01173 Change-Id: I721343b86fe3607ff3b71b63b088da4dca8fe792 Signed-off-by: Jaechul Lee --- diff --git a/packaging/pulseaudio.spec b/packaging/pulseaudio.spec index a0851ca..457dda6 100644 --- a/packaging/pulseaudio.spec +++ b/packaging/pulseaudio.spec @@ -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 diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c index e63a676..1929ed1 100644 --- a/src/pulsecore/core-util.c +++ b/src/pulsecore/core-util.c @@ -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; }