MBIM: call dissector_(add|delete)_uint only when necessary

Change-Id: I12bbe9e1d81560f1874d4e575b19db1842fa0c72
Reviewed-on: https://code.wireshark.org/review/6352
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
This commit is contained in:
Pascal Quantin 2015-01-06 21:59:04 +01:00
parent a6e6deea7f
commit 119f564e0d
1 changed files with 9 additions and 6 deletions

View File

@ -7989,7 +7989,7 @@ proto_register_mbim(void)
void
proto_reg_handoff_mbim(void)
{
static gboolean initialized = FALSE;
static gboolean initialized = FALSE, mbim_control_decode_unknown_itf_prev = FALSE;
dissector_handle_t mbim_control_handle;
if (!initialized) {
@ -8005,11 +8005,14 @@ proto_reg_handoff_mbim(void)
initialized = TRUE;
}
heur_dissector_set_enabled("usb.bulk", dissect_mbim_bulk_heur, proto_mbim, mbim_bulk_heuristic);
mbim_control_handle = find_dissector("mbim.control");
if (mbim_control_decode_unknown_itf) {
dissector_add_uint("usb.control", IF_CLASS_UNKNOWN, mbim_control_handle);
} else {
dissector_delete_uint("usb.control", IF_CLASS_UNKNOWN, mbim_control_handle);
if (mbim_control_decode_unknown_itf != mbim_control_decode_unknown_itf_prev) {
mbim_control_handle = find_dissector("mbim.control");
if (mbim_control_decode_unknown_itf) {
dissector_add_uint("usb.control", IF_CLASS_UNKNOWN, mbim_control_handle);
} else {
dissector_delete_uint("usb.control", IF_CLASS_UNKNOWN, mbim_control_handle);
}
mbim_control_decode_unknown_itf_prev = mbim_control_decode_unknown_itf;
}
}