diff options
author | wmeier <wmeier@f5534014-38df-0310-8fa8-9805f1628bb7> | 2008-08-27 19:47:21 +0000 |
---|---|---|
committer | wmeier <wmeier@f5534014-38df-0310-8fa8-9805f1628bb7> | 2008-08-27 19:47:21 +0000 |
commit | 0d389deaeb784102dce9f759f2d143b5a4283842 (patch) | |
tree | 33391a6d529c909e654a7d71fcd4ff1b2d13da46 /epan/dissectors/packet-ipsec-tcp.c | |
parent | 8eb9486d16c46450c3f9bcb02f75ca67ae83e9a3 (diff) |
If port pref changed, delete registration for previous port
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@26099 f5534014-38df-0310-8fa8-9805f1628bb7
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); } |