aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-ipsec-tcp.c
diff options
context:
space:
mode:
authorwmeier <wmeier@f5534014-38df-0310-8fa8-9805f1628bb7>2008-08-27 19:47:21 +0000
committerwmeier <wmeier@f5534014-38df-0310-8fa8-9805f1628bb7>2008-08-27 19:47:21 +0000
commit0d389deaeb784102dce9f759f2d143b5a4283842 (patch)
tree33391a6d529c909e654a7d71fcd4ff1b2d13da46 /epan/dissectors/packet-ipsec-tcp.c
parent8eb9486d16c46450c3f9bcb02f75ca67ae83e9a3 (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.c18
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);
}