diff --git a/epan/dissectors/packet-tds.c b/epan/dissectors/packet-tds.c index c0937c8fe1..c3554c9c9c 100644 --- a/epan/dissectors/packet-tds.c +++ b/epan/dissectors/packet-tds.c @@ -151,6 +151,7 @@ #include #include #include +#include #include #include "packet-tcp.h" @@ -4222,6 +4223,13 @@ version_convert( gchar *result, guint32 hexver ) (hexver >> 24) & 0xFF, (hexver >> 16) & 0xFF, (hexver >> 8) & 0xFF, hexver & 0xFF); } +static void +apply_tds_prefs(void) { + pref_t *tds_ports = prefs_find_preference(prefs_find_module("tds"), "tcp.port"); + + tds_tcp_ports = range_copy(*tds_ports->varp.range); +} + /* Register the protocol with Wireshark */ /* this format is required because a script is used to build the C function @@ -5604,7 +5612,7 @@ proto_register_tds(void) /* Allow dissector to be found by name. */ tds_tcp_handle = register_dissector("tds", dissect_tds_message, proto_tds); - tds_module = prefs_register_protocol(proto_tds, NULL); + tds_module = prefs_register_protocol(proto_tds, apply_tds_prefs); prefs_register_bool_preference(tds_module, "desegment_buffers", "Reassemble TDS buffers spanning multiple TCP segments", "Whether the TDS dissector should reassemble TDS buffers spanning multiple TCP segments. " @@ -5622,10 +5630,6 @@ proto_register_tds(void) "TDS decode as", "Hint as to whether to decode TDS protocol as little-endian or big-endian. (TDS7/8 always decoded as little-endian)", &tds_little_endian, tds_endian_type_options, FALSE); - prefs_register_range_preference(tds_module, "tcp_ports", - "TDS TCP ports", - "Additional TCP ports to decode as TDS", - &tds_tcp_ports, 0xFFFF); register_init_routine(tds_init); register_cleanup_routine(tds_cleanup); diff --git a/epan/packet.c b/epan/packet.c index 4a248821bf..50b24d7d85 100644 --- a/epan/packet.c +++ b/epan/packet.c @@ -1063,7 +1063,7 @@ void dissector_add_uint_range_with_preference(const char *abbrev, const char* ra /* Some preference callback functions use the proto_reg_handoff_ routine to apply preferences, which could duplicate the registration of a preference. Check for that here */ - else if (prefs_find_preference(module, abbrev) == NULL) { + if (prefs_find_preference(module, abbrev) == NULL) { description = wmem_strdup_printf(wmem_epan_scope(), "%s %s(s)", proto_get_protocol_short_name(handle->protocol), pref_dissector_table->ui_name); title = wmem_strdup_printf(wmem_epan_scope(), "%s(s)", pref_dissector_table->ui_name); diff --git a/epan/prefs.c b/epan/prefs.c index 0109826338..c3814af396 100644 --- a/epan/prefs.c +++ b/epan/prefs.c @@ -4113,6 +4113,7 @@ deprecated_port_pref(gchar *pref_name, const gchar *value) {"mrcpv2.tcp.port_range", "MRCPv2", "tcp.port", 10}, {"rtsp.tcp.port_range", "RTSP", "tcp.port", 10}, {"sip.tcp.ports", "SIP", "tcp.port", 10}, + {"tds.tcp_ports", "TDS", "tcp.port", 10}, {"uma.tcp.ports", "UMA", "tcp.port", 10}, };