diff options
author | Bill Meier <wmeier@newsguy.com> | 2008-08-27 19:47:21 +0000 |
---|---|---|
committer | Bill Meier <wmeier@newsguy.com> | 2008-08-27 19:47:21 +0000 |
commit | 32dc6c98e44d9416d65cd6f13e603b85cf615479 (patch) | |
tree | 33391a6d529c909e654a7d71fcd4ff1b2d13da46 /epan/dissectors/packet-ipsec-tcp.c | |
parent | 317201b985df098a5b86a04afde8dd5ce33c7356 (diff) |
If port pref changed, delete registration for previous port
svn path=/trunk/; revision=26099
Diffstat (limited to 'epan/dissectors/packet-ipsec-tcp.c')
-rw-r--r-- | epan/dissectors/packet-ipsec-tcp.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/epan/dissectors/packet-ipsec-tcp.c b/epan/dissectors/packet-ipsec-tcp.c index d6c15bd1ab..fcbe6709ba 100644 --- a/epan/dissectors/packet-ipsec-tcp.c +++ b/epan/dissectors/packet-ipsec-tcp.c @@ -166,12 +166,20 @@ dissect_tcpencap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) void proto_reg_handoff_tcpencap(void) { - dissector_handle_t tcpencap_handle; - - esp_handle = find_dissector("esp"); - udp_handle = find_dissector("udp"); + static dissector_handle_t tcpencap_handle; + static initialized = FALSE; + static guint tcpencap_tcp_port; + + if (!initialized) { + tcpencap_handle = new_create_dissector_handle(dissect_tcpencap, proto_tcpencap); + esp_handle = find_dissector("esp"); + udp_handle = find_dissector("udp"); + initialized = TRUE; + } else { + dissector_delete("tcp.port", tcpencap_tcp_port, tcpencap_handle); + } - tcpencap_handle = new_create_dissector_handle(dissect_tcpencap, proto_tcpencap); + tcpencap_tcp_port = global_tcpencap_tcp_port; dissector_add("tcp.port", global_tcpencap_tcp_port, tcpencap_handle); } |