Commit 9cf5b0ea authored by Marcel Holtmann's avatar Marcel Holtmann

[Bluetooth] Disconnect L2CAP connection after last RFCOMM DLC

The RFCOMM specification says that the device closing the last DLC on
a particular session is responsible for closing the multiplexer by
closing the corresponding L2CAP channel.
Signed-off-by: default avatarVille Tervo <ville.tervo@nokia.com>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 77f2a45f
...@@ -1058,6 +1058,12 @@ static int rfcomm_recv_ua(struct rfcomm_session *s, u8 dlci) ...@@ -1058,6 +1058,12 @@ static int rfcomm_recv_ua(struct rfcomm_session *s, u8 dlci)
case BT_DISCONN: case BT_DISCONN:
d->state = BT_CLOSED; d->state = BT_CLOSED;
__rfcomm_dlc_close(d, 0); __rfcomm_dlc_close(d, 0);
if (list_empty(&s->dlcs)) {
s->state = BT_DISCONN;
rfcomm_send_disc(s, 0);
}
break; break;
} }
} else { } else {
...@@ -1067,6 +1073,10 @@ static int rfcomm_recv_ua(struct rfcomm_session *s, u8 dlci) ...@@ -1067,6 +1073,10 @@ static int rfcomm_recv_ua(struct rfcomm_session *s, u8 dlci)
s->state = BT_CONNECTED; s->state = BT_CONNECTED;
rfcomm_process_connect(s); rfcomm_process_connect(s);
break; break;
case BT_DISCONN:
rfcomm_session_put(s);
break;
} }
} }
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment