diff options
-rw-r--r-- | epan/dissectors/packet-hislip.c | 13 |
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); |