aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-ipsec-tcp.c
diff options
context:
space:
mode:
authorBill Meier <wmeier@newsguy.com>2008-08-27 19:47:21 +0000
committerBill Meier <wmeier@newsguy.com>2008-08-27 19:47:21 +0000
commit32dc6c98e44d9416d65cd6f13e603b85cf615479 (patch)
tree33391a6d529c909e654a7d71fcd4ff1b2d13da46 /epan/dissectors/packet-ipsec-tcp.c
parent317201b985df098a5b86a04afde8dd5ce33c7356 (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.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);
}