From dc93041dfe788af0aed776e1ec69fa3017424df2 Mon Sep 17 00:00:00 2001 From: Michael Mann Date: Tue, 24 Nov 2015 07:01:26 -0500 Subject: Convert XMPP dissector to "new style". Wasn't sure if the absence/disabling of the XML dissector should prevent this dissector from doing anything, but left the current implementation that allows it mostly because XMPP has an IANA registered TCP port. Change-Id: Ie08b262d611e4d9add9566f440e3d825d6b0b55c Reviewed-on: https://code.wireshark.org/review/12094 Petri-Dish: Michael Mann Tested-by: Petri Dish Buildbot Reviewed-by: Michael Mann --- epan/dissectors/packet-xmpp.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/epan/dissectors/packet-xmpp.c b/epan/dissectors/packet-xmpp.c index 58582e9108..550ef19b74 100644 --- a/epan/dissectors/packet-xmpp.c +++ b/epan/dissectors/packet-xmpp.c @@ -373,8 +373,8 @@ static dissector_handle_t xmpp_handle; static dissector_handle_t xml_handle; -static void -dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { +static int +dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) { xml_frame_t *xml_frame; xml_frame_t *xml_dissector_frame; @@ -416,7 +416,7 @@ dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { if ((indx >= 0) && (last_char != '>')) { pinfo->desegment_len = DESEGMENT_ONE_MORE_SEGMENT; - return; + return tvb_captured_length(tvb); } } } @@ -436,7 +436,7 @@ dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { { col_append_str(pinfo->cinfo, COL_INFO, "(XML dissector disabled, can't dissect XMPP)"); expert_add_info(pinfo, xmpp_item, &ei_xmpp_xml_disabled); - return; + return tvb_captured_length(tvb); } /*if stream end occurs then return*/ @@ -444,18 +444,18 @@ dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { { if(xmpp_tree) xmpp_proto_tree_hide_first_child(xmpp_tree); - return; + return tvb_captured_length(tvb); } xml_dissector_frame = (xml_frame_t *)p_get_proto_data(pinfo->pool, pinfo, proto_xml, 0); if(xml_dissector_frame == NULL) - return; + return tvb_captured_length(tvb); /*data from XML dissector*/ xml_frame = xml_dissector_frame->first_child; if(!xml_frame) - return; + return tvb_captured_length(tvb); if (!xmpp_info) { xmpp_info = wmem_new(wmem_file_scope(), xmpp_conv_info_t); @@ -544,6 +544,7 @@ dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { xmpp_element_t_tree_free(packet); xml_frame = xml_frame->next_sibling; } + return tvb_captured_length(tvb); } @@ -1472,7 +1473,7 @@ proto_register_xmpp(void) { expert_xmpp = expert_register_protocol(proto_xmpp); expert_register_field_array(expert_xmpp, ei, array_length(ei)); - xmpp_handle = register_dissector("xmpp", dissect_xmpp, proto_xmpp); + xmpp_handle = new_register_dissector("xmpp", dissect_xmpp, proto_xmpp); xmpp_init_parsers(); } -- cgit v1.2.3