Hello,

On 04/09/2018 07:15 PM, Georg Chini wrote:
> sco_process_render does not unref the memblock when it encounters an error.
> 
> This patch fixes the issue. It also changes the return value to 1 in the case
> of EAGAIN. Because the data was already rendered and cannot be re-sent, we
> have to discard the block.
> ---
>  src/modules/bluetooth/module-bluez5-device.c | 12 +++++++++---
>  1 file changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/src/modules/bluetooth/module-bluez5-device.c 
> b/src/modules/bluetooth/module-bluez5-device.c
> index 95d288ef..b81c233c 100644
> --- a/src/modules/bluetooth/module-bluez5-device.c
> +++ b/src/modules/bluetooth/module-bluez5-device.c
> @@ -282,9 +282,13 @@ static int sco_process_render(struct userdata *u) {
>          if (errno == EINTR)
>              /* Retry right away if we got interrupted */
>              continue;
> -        else if (errno == EAGAIN)
> -            /* Hmm, apparently the socket was not writable, give up for now 
> */
> -            return 0;
> +
> +        pa_memblock_unref(memchunk.memblock);
> +
> +        if (errno == EAGAIN)
> +            /* Hmm, apparently the socket was not writable, give up for now.
> +             * Because the data was already rendered, let's discard the 
> block. */
> +            return 1;
>  

1. errno value can be changed during pa_memblock_unref()
2. I think the same changes are required for a2dp_process_render() too.


>          pa_log_error("Failed to write data to SCO socket: %s", 
> pa_cstrerror(errno));
>          return -1;
> @@ -296,6 +300,8 @@ static int sco_process_render(struct userdata *u) {
>          pa_log_error("Wrote memory block to socket only partially! %llu 
> written, wanted to write %llu.",
>                      (unsigned long long) l,
>                      (unsigned long long) memchunk.length);
> +
> +        pa_memblock_unref(memchunk.memblock);
>          return -1;
>      }
>  
> 

--
Raman
_______________________________________________
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss

Reply via email to