Hi,
On Tue, 2014-08-05 at 10:42 +0000, Chengyi Zhao wrote:
> Hi Patrik,
>
> > From: [email protected]
> > To: [email protected]
> > Subject: [PATCH] service: Fix service disconnection when using the same
> > index
> > Date: Tue, 5 Aug 2014 13:12:56 +0300
> >
> > When a service is to be connected, other service(s) using the same
> > interface will be disconnected. Fix the already connected or connecting
> > situation by ignoring the service in question when seen in the list.
> >
> > Simplify the index detection and signal a timeout when disconnect needs
> > to happen first in order to indicate to the caller that the connect
> > action needs to be redone.
> >
>
> I think whether we can fix this issue with the following patch, ConnMan only
> checks the service state when entered the function "connect_service", please
> review.
>
> src/service.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/src/service.c b/src/service.c
> index 9406bc3..9740738 100644
> --- a/src/service.c
> +++ b/src/service.c
> @@ -3957,6 +3957,16 @@ static DBusMessage *connect_service(DBusConnection
> *conn,
> if (service->pending)
> return __connman_error_in_progress(msg);
>
> + if (is_connected(service)) {
> + err = -EISCONN;
> + goto done;
> + }
> +
> + if (is_connecting(service)) {
> + err = -EALREADY;
> + goto done;
> + }
> +
This one will work as well. But to avoid confusion, we'd like to call
__connman_service_connect() from everywhere in order to have one and
only one place in the code where all necessary checks are done.
Cheers,
Patrik
_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman