aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-btavdtp.c
diff options
context:
space:
mode:
authorMichal Labedzki <michal.labedzki@tieto.com>2014-04-14 18:59:07 +0200
committerMichal Labedzki <michal.labedzki@tieto.com>2014-05-30 11:27:33 +0000
commit1258ce7bcebe10e674a83d7b8b25559db74956d9 (patch)
tree910931000f2697f36a880eee4d264068dd3f573a /epan/dissectors/packet-btavdtp.c
parent49cc95784b1116bbb023bd54e1c479ededceede8 (diff)
Bluetooth: AVDTP: First step to fully support AVDTP session
Session should be finished too on HCI Disconnect and Adapter disappear. Change-Id: I0823872e60ec932fc0831975e54dc33d49fb5dbc Reviewed-on: https://code.wireshark.org/review/1882 Reviewed-by: Michal Labedzki <michal.labedzki@tieto.com>
Diffstat (limited to 'epan/dissectors/packet-btavdtp.c')
-rw-r--r--epan/dissectors/packet-btavdtp.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/epan/dissectors/packet-btavdtp.c b/epan/dissectors/packet-btavdtp.c
index e7688c1e6b..9f0f051c9d 100644
--- a/epan/dissectors/packet-btavdtp.c
+++ b/epan/dissectors/packet-btavdtp.c
@@ -541,6 +541,8 @@ typedef struct _channels_info_t {
wmem_tree_t *stream_numbers;
guint32 disconnect_in_frame;
guint32 *l2cap_disconnect_in_frame;
+ guint32 *hci_disconnect_in_frame;
+ guint32 *adapter_disconnect_in_frame;
sep_entry_t *sep;
} channels_info_t;
@@ -1300,7 +1302,11 @@ dissect_btavdtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
subtree = (wmem_tree_t *) wmem_tree_lookup32_array(channels, key);
channels_info = (subtree) ? (channels_info_t *) wmem_tree_lookup32_le(subtree, frame_number) : NULL;
- if (!(channels_info && *channels_info->l2cap_disconnect_in_frame >= pinfo->fd->num && channels_info->disconnect_in_frame >= pinfo->fd->num)) {
+ if (!(channels_info &&
+ *channels_info->adapter_disconnect_in_frame >= pinfo->fd->num &&
+ *channels_info->hci_disconnect_in_frame >= pinfo->fd->num &&
+ *channels_info->l2cap_disconnect_in_frame >= pinfo->fd->num &&
+ channels_info->disconnect_in_frame >= pinfo->fd->num)) {
channels_info = (channels_info_t *) wmem_new (wmem_file_scope(), channels_info_t);
channels_info->control_local_cid = l2cap_data->local_cid;
@@ -1308,7 +1314,9 @@ dissect_btavdtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
channels_info->media_local_cid = BTL2CAP_UNKNOWN_CID;
channels_info->media_remote_cid = BTL2CAP_UNKNOWN_CID;
channels_info->disconnect_in_frame = G_MAXUINT32;
- channels_info->l2cap_disconnect_in_frame = l2cap_data->disconnect_in_frame;
+ channels_info->l2cap_disconnect_in_frame = l2cap_data->disconnect_in_frame;
+ channels_info->hci_disconnect_in_frame = l2cap_data->hci_disconnect_in_frame;
+ channels_info->adapter_disconnect_in_frame = l2cap_data->adapter_disconnect_in_frame;
channels_info->sep = NULL;
if (!pinfo->fd->flags.visited) {