diff options
author | Luis Ontanon <luis.ontanon@gmail.com> | 2007-08-07 23:07:27 +0000 |
---|---|---|
committer | Luis Ontanon <luis.ontanon@gmail.com> | 2007-08-07 23:07:27 +0000 |
commit | 4238415deb72f8b956a5b9f1f9d8f8810ff7eef0 (patch) | |
tree | 6ab8f6b712439b83531e24fdff9d13fffb8696a6 /epan/dissectors/packet-xml.c | |
parent | 0982bc011c551913c8277977d1c05186b0de1782 (diff) |
Remove XML heuristic dissector when disabling it.
svn path=/trunk/; revision=22465
Diffstat (limited to 'epan/dissectors/packet-xml.c')
-rw-r--r-- | epan/dissectors/packet-xml.c | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/epan/dissectors/packet-xml.c b/epan/dissectors/packet-xml.c index 6cbdcc3265..23909f7ca4 100644 --- a/epan/dissectors/packet-xml.c +++ b/epan/dissectors/packet-xml.c @@ -124,6 +124,8 @@ static xml_ns_t* root_ns; static gboolean pref_heuristic_media = FALSE; static gboolean pref_heuristic_tcp = FALSE; +static gboolean pref_heuristic_media_save = FALSE; +static gboolean pref_heuristic_tcp_save = FALSE; static range_t *global_xml_tcp_range = NULL; static range_t *xml_tcp_range = NULL; @@ -1193,15 +1195,29 @@ static void range_add_xml_tcp_callback(guint32 port) { } static void apply_prefs(void) { - if (pref_heuristic_media) { - heur_dissector_add("http", dissect_xml_heur, xml_ns.hf_tag); - heur_dissector_add("sip", dissect_xml_heur, xml_ns.hf_tag); - heur_dissector_add("media", dissect_xml_heur, xml_ns.hf_tag); - } + if (pref_heuristic_media_save != pref_heuristic_media) { + if (pref_heuristic_media) { + heur_dissector_add("http", dissect_xml_heur, xml_ns.hf_tag); + heur_dissector_add("sip", dissect_xml_heur, xml_ns.hf_tag); + heur_dissector_add("media", dissect_xml_heur, xml_ns.hf_tag); + pref_heuristic_media_save = TRUE; + } else { + heur_dissector_delete("http", dissect_xml_heur, xml_ns.hf_tag); + heur_dissector_delete("sip", dissect_xml_heur, xml_ns.hf_tag); + heur_dissector_delete("media", dissect_xml_heur, xml_ns.hf_tag); + pref_heuristic_media_save = FALSE; + } + } - if (pref_heuristic_tcp) { - heur_dissector_add("tcp", dissect_xml_heur, xml_ns.hf_tag); - } + if (pref_heuristic_tcp_save != pref_heuristic_tcp ) { + if (pref_heuristic_tcp) { + heur_dissector_add("tcp", dissect_xml_heur, xml_ns.hf_tag); + pref_heuristic_tcp_save = TRUE; + } else { + heur_dissector_delete("tcp", dissect_xml_heur, xml_ns.hf_tag); + pref_heuristic_tcp_save = FALSE; + } + } range_foreach(xml_tcp_range, range_delete_xml_tcp_callback); g_free(xml_tcp_range); |