On Tuesday 28 May 2019 16:49:19 Frédéric Danis wrote:
> Since commit ad447d14682 (in 2009) pa_read and pa_write take care of
> handling EINTR error.
> So, pa_read, pa_write, pa_iochannel_read and pa_iochannel_write can not
> exit with errno set to EINTR, and testing it is useless.
> ---
>  src/modules/bluetooth/module-bluez5-device.c | 16 +-------
>  src/modules/module-esound-sink.c             |  4 +-
>  src/modules/module-pipe-sink.c               | 17 ++++-----
>  src/modules/module-pipe-source.c             |  4 +-
>  src/modules/module-solaris.c                 |  4 +-
>  src/modules/oss/module-oss.c                 | 10 +----
>  src/pulsecore/fdsem.c                        | 40 ++++++--------------
>  src/pulsecore/iochannel.c                    |  2 +-
>  src/pulsecore/protocol-esound.c              |  8 ++--
>  src/pulsecore/protocol-simple.c              |  2 +-
>  10 files changed, 32 insertions(+), 75 deletions(-)
> 
> diff --git a/src/modules/bluetooth/module-bluez5-device.c 
> b/src/modules/bluetooth/module-bluez5-device.c
> index 56c96054d..f850a3a41 100644
> --- a/src/modules/bluetooth/module-bluez5-device.c
> +++ b/src/modules/bluetooth/module-bluez5-device.c
> @@ -279,10 +279,6 @@ static int sco_process_render(struct userdata *u) {
>  
>          saved_errno = errno;
>  
> -        if (saved_errno == EINTR)
> -            /* Retry right away if we got interrupted */
> -            continue;
> -
>          pa_memblock_unref(memchunk.memblock);
>  
>          if (saved_errno == EAGAIN) {
> @@ -445,11 +441,7 @@ static int a2dp_write_buffer(struct userdata *u, size_t 
> nbytes) {
>  
>          if (l < 0) {
>  
> -            if (errno == EINTR)
> -                /* Retry right away if we got interrupted */
> -                continue;
> -
> -            else if (errno == EAGAIN) {
> +            if (errno == EAGAIN) {
>                  /* Hmm, apparently the socket was not writable, give up for 
> now */
>                  pa_log_debug("Got EAGAIN on write() after POLLOUT, probably 
> there is a temporary connection loss.");
>                  break;
> @@ -543,11 +535,7 @@ static int a2dp_process_push(struct userdata *u) {
>  
>          if (l <= 0) {
>  
> -            if (l < 0 && errno == EINTR)
> -                /* Retry right away if we got interrupted */
> -                continue;
> -
> -            else if (l < 0 && errno == EAGAIN)
> +            if (l < 0 && errno == EAGAIN)
>                  /* Hmm, apparently the socket was not readable, give up for 
> now. */
>                  break;
>  

Hi! This change conflicts with "Implement reading SO_TIMESTAMP for A2DP
source" patch as it stops using pa_read() function. For SO_TIMESTAMP is
needed recvmsg() and then also handling of EINTR/EAGAIN.

-- 
Pali Rohár
pali.ro...@gmail.com
_______________________________________________
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss

Reply via email to