aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--epan/packet.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/epan/packet.c b/epan/packet.c
index bf8267c3ac..f161346d76 100644
--- a/epan/packet.c
+++ b/epan/packet.c
@@ -861,6 +861,9 @@ call_dissector_work(dissector_handle_t handle, tvbuff_t *tvb, packet_info *pinfo
int len;
guint saved_layers_len = 0;
guint saved_tree_count = tree ? tree->tree_data->count : 0;
+ gboolean saved_use_conv_addr_port_endpoints;
+ struct conversation_addr_port_endpoints *saved_conv_addr_port_endpoints;
+ struct conversation_element *saved_conv_elements;
if (handle->protocol != NULL &&
!proto_is_protocol_enabled(handle->protocol)) {
@@ -875,6 +878,10 @@ call_dissector_work(dissector_handle_t handle, tvbuff_t *tvb, packet_info *pinfo
saved_layers_len = wmem_list_count(pinfo->layers);
DISSECTOR_ASSERT(saved_layers_len < PINFO_LAYER_MAX_RECURSION_DEPTH);
+ saved_use_conv_addr_port_endpoints = pinfo->use_conv_addr_port_endpoints;
+ saved_conv_addr_port_endpoints = pinfo->conv_addr_port_endpoints;
+ saved_conv_elements = pinfo->conv_elements;
+
/*
* can_desegment is set to 2 by anyone which offers the
* desegmentation api/service.
@@ -931,6 +938,9 @@ call_dissector_work(dissector_handle_t handle, tvbuff_t *tvb, packet_info *pinfo
}
pinfo->current_proto = saved_proto;
pinfo->can_desegment = saved_can_desegment;
+ pinfo->use_conv_addr_port_endpoints = saved_use_conv_addr_port_endpoints;
+ pinfo->conv_addr_port_endpoints = saved_conv_addr_port_endpoints;
+ pinfo->conv_elements = saved_conv_elements;
return len;
}