diff options
author | Tomas Kukosa <tomas.kukosa@siemens.com> | 2005-09-05 11:59:22 +0000 |
---|---|---|
committer | Tomas Kukosa <tomas.kukosa@siemens.com> | 2005-09-05 11:59:22 +0000 |
commit | 4887fe9bf1d591114d3216e37d181ff1a7bdb5ea (patch) | |
tree | 9048f0110a92f7374106ed35f8aa888aa60fdc41 /epan | |
parent | c53bf17cdacce5e05d23b61b176cf2d5fadd5e16 (diff) |
- set length for "Encapsulated multipart part" tree item
- pass right content type to media subdissectors
svn path=/trunk/; revision=15683
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-multipart.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/epan/dissectors/packet-multipart.c b/epan/dissectors/packet-multipart.c index 1f40b3aa80..8d2571ae6a 100644 --- a/epan/dissectors/packet-multipart.c +++ b/epan/dissectors/packet-multipart.c @@ -661,17 +661,21 @@ process_body_part(proto_tree *tree, tvbuff_t *tvb, const guint8 *boundary, dissected = dissector_try_string(media_type_dissector_table, content_type_str, tmp_tvb, pinfo, subtree); } + if (! dissected) { + const char *save_match_string = pinfo->match_string; + pinfo->match_string = content_type_str; + call_dissector(media_handle, tmp_tvb, pinfo, subtree); + pinfo->match_string = save_match_string; + } pinfo->private_data = save_private_data; g_free(content_type_str); content_type_str = NULL; parameters = NULL; /* Shares same memory as content_type_str */ - if (! dissected) { - call_dissector(media_handle, tmp_tvb, pinfo, tree); - } } else { call_dissector(data_handle, tmp_tvb, pinfo, subtree); } if (tree) { + proto_item_set_len(ti, boundary_start - start); if (*last_boundary == TRUE) { proto_tree_add_text(tree, tvb, boundary_start, boundary_line_len, |