2015-10-30 13:39:04

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: [PATCH BlueZ] core/service: Fix failing to connect external profile

From: Luiz Augusto von Dentz <[email protected]>

When initiating a connection to a external profile btd_service_connect
will be called which will change the service state to
BTD_SERVICE_STATE_CONNECTING but then once the connection completes
service_accept is called but since it now checks the state it would
return -EALREADY to prevent driver accept to be called more than once.
---
src/service.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/service.c b/src/service.c
index 2ed72fb..7da922c 100644
--- a/src/service.c
+++ b/src/service.c
@@ -191,7 +191,7 @@ int service_accept(struct btd_service *service)
break;
case BTD_SERVICE_STATE_CONNECTING:
case BTD_SERVICE_STATE_CONNECTED:
- return -EALREADY;
+ return 0;
case BTD_SERVICE_STATE_DISCONNECTING:
return -EBUSY;
}
--
2.4.3



2015-10-31 09:52:38

by Steve Brown

[permalink] [raw]
Subject: Re: [PATCH BlueZ] core/service: Fix failing to connect external profile

Luiz,

On Fri, 2015-10-30 at 15:39 +0200, Luiz Augusto von Dentz wrote:
> From: Luiz Augusto von Dentz <[email protected]>
>
> When initiating a connection to a external profile
> btd_service_connect
> will be called which will change the service state to
> BTD_SERVICE_STATE_CONNECTING but then once the connection completes
> service_accept is called but since it now checks the state it would
> return -EALREADY to prevent driver accept to be called more than
> once.
> ---
> src/service.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/service.c b/src/service.c
> index 2ed72fb..7da922c 100644
> --- a/src/service.c
> +++ b/src/service.c
> @@ -191,7 +191,7 @@ int service_accept(struct btd_service *service)
> break;
> case BTD_SERVICE_STATE_CONNECTING:
> case BTD_SERVICE_STATE_CONNECTED:
> - return -EALREADY;
> + return 0;
> case BTD_SERVICE_STATE_DISCONNECTING:
> return -EBUSY;
> }

This patch solves my hfp headset connect problem.

Thanks,

Steve



2015-11-02 14:32:32

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: [PATCH BlueZ] core/service: Fix failing to connect external profile

Hi,

On Sat, Oct 31, 2015 at 11:52 AM, Steve Brown <[email protected]> wrote:
> Luiz,
>
> On Fri, 2015-10-30 at 15:39 +0200, Luiz Augusto von Dentz wrote:
>> From: Luiz Augusto von Dentz <[email protected]>
>>
>> When initiating a connection to a external profile
>> btd_service_connect
>> will be called which will change the service state to
>> BTD_SERVICE_STATE_CONNECTING but then once the connection completes
>> service_accept is called but since it now checks the state it would
>> return -EALREADY to prevent driver accept to be called more than
>> once.
>> ---
>> src/service.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/src/service.c b/src/service.c
>> index 2ed72fb..7da922c 100644
>> --- a/src/service.c
>> +++ b/src/service.c
>> @@ -191,7 +191,7 @@ int service_accept(struct btd_service *service)
>> break;
>> case BTD_SERVICE_STATE_CONNECTING:
>> case BTD_SERVICE_STATE_CONNECTED:
>> - return -EALREADY;
>> + return 0;
>> case BTD_SERVICE_STATE_DISCONNECTING:
>> return -EBUSY;
>> }
>
> This patch solves my hfp headset connect problem.
>
> Thanks,
>
> Steve

Applied.


--
Luiz Augusto von Dentz