diff options
-rw-r--r-- | epan/packet.c | 10 |
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; } |