Hi Archie, On Wed, Jun 10, 2020 at 8:04 AM Archie Pusaka <apusaka@xxxxxxxxxx> wrote: > > From: Archie Pusaka <apusaka@xxxxxxxxxxxx> > > If the intr channel was disconnected by the other party, then they > are also responsible to close the ctrl channel. Such disconnection > message would have the G_IO_ERR flag set, as opposed to it being > unset if the disconnection is initiated by us. > > There doesn't seem to be an explicit rule in the specification > about this behavior, but this is enforced in the PTS qualification > tool. > --- > > profiles/input/device.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/profiles/input/device.c b/profiles/input/device.c > index d89da2d7c..a858bbb19 100644 > --- a/profiles/input/device.c > +++ b/profiles/input/device.c > @@ -333,8 +333,10 @@ static gboolean intr_watch_cb(GIOChannel *chan, GIOCondition cond, gpointer data > idev->intr_io = NULL; > } > > - /* Close control channel */ > - if (idev->ctrl_io && !(cond & G_IO_NVAL)) > + /* Close control channel if the closing of interrupt channel is not > + * initiated by the other party > + */ > + if (idev->ctrl_io && !(cond & (G_IO_NVAL | G_IO_ERR))) > g_io_channel_shutdown(idev->ctrl_io, TRUE, NULL); > > btd_service_disconnecting_complete(idev->service, 0); > -- > 2.27.0.278.ge193c7cf3a9-goog > Applied, thanks. -- Luiz Augusto von Dentz