aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-diameter.c
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2011-06-21 11:53:33 +0000
committerAnders Broman <anders.broman@ericsson.com>2011-06-21 11:53:33 +0000
commite9e32d78444c7cde6754b6795c67c6ad229b404e (patch)
treeb7fe41c6afafdd454cfb61ef08565eed1780dbf9 /epan/dissectors/packet-diameter.c
parent84cef97505eaf280867e52ac194dc34d32ff2513 (diff)
We need to start reassembly on a segment boundary.
svn path=/trunk/; revision=37740
Diffstat (limited to 'epan/dissectors/packet-diameter.c')
-rw-r--r--epan/dissectors/packet-diameter.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/epan/dissectors/packet-diameter.c b/epan/dissectors/packet-diameter.c
index c0c2e18ece..a4bb07fc18 100644
--- a/epan/dissectors/packet-diameter.c
+++ b/epan/dissectors/packet-diameter.c
@@ -1062,8 +1062,15 @@ dissect_diameter(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_diameter_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- tcp_dissect_pdus(tvb, pinfo, tree, gbl_diameter_desegment, 4,
- get_diameter_pdu_len, dissect_diameter_common);
+ /* Check if we have the start of a PDU or if this is segment */
+ if (!check_diameter(tvb)){
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "DIAMETER");
+ col_set_str(pinfo->cinfo, COL_INFO, "Continuation");
+ call_dissector(data_handle, tvb, pinfo, tree);
+ }else{
+ tcp_dissect_pdus(tvb, pinfo, tree, gbl_diameter_desegment, 4,
+ get_diameter_pdu_len, dissect_diameter_common);
+ }
}