summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--epan/dissectors/packet-hislip.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/epan/dissectors/packet-hislip.c b/epan/dissectors/packet-hislip.c
index 1d4af1031a..e887452961 100644
--- a/epan/dissectors/packet-hislip.c
+++ b/epan/dissectors/packet-hislip.c
@@ -778,12 +778,8 @@ dissect_hislip_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,void
case HISLIP_ASYNCLOCKINFO:
/*Request*/
- hislip_trans = (hislip_transaction_t *)wmem_tree_lookup32( hislip_info->pdus, pinfo->fd->num);
-
- if(!hislip_trans)
+ if(!PINFO_FD_VISITED(pinfo))
{
- DISSECTOR_ASSERT_HINT(!pinfo->fd->flags.visited, "Missing 'Request' Info");
-
/* This is a new request */
hislip_trans = (hislip_transaction_t *)wmem_alloc(wmem_file_scope(),sizeof( hislip_transaction_t));
hislip_trans->req_frame = pinfo->fd->num;
@@ -791,9 +787,12 @@ dissect_hislip_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,void
hislip_trans->messagetype=hislip_data.messagetype;
hislip_trans->controltype=hislip_data.controlcode;
wmem_tree_insert32(hislip_info->pdus, pinfo->fd->num , (void *)hislip_trans);
-
}
- if(hislip_trans->rep_frame != 0)
+ else
+ {
+ hislip_trans = (hislip_transaction_t *)wmem_tree_lookup32(hislip_info->pdus, pinfo->fd->num);
+ }
+ if(hislip_trans && hislip_trans->rep_frame != 0)
{
it = proto_tree_add_uint( hislip_tree, hf_hislip_response, tvb, 0, 0, hislip_trans->rep_frame);
PROTO_ITEM_SET_GENERATED(it);