diff options
author | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2005-08-11 10:08:45 +0000 |
---|---|---|
committer | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2005-08-11 10:08:45 +0000 |
commit | 1f0993e47e36db3f60e0d061d1da2da5cafbcba5 (patch) | |
tree | df6d134cec88ea9b7aeee37f4f52a161bc5839e0 /epan/dissectors/packet-iscsi.c | |
parent | 030981ff553f6697a372edfc7098d17c91a0e549 (diff) |
Fix for bug 342
If we encounter a frame we have already seen (i.e. visited==1) but we can not fing the ISCSI command inside the _matched table, this just means there were no response pdu nor any data pdu with the S bit set.
So, then just pick the cdata structure up from the _unmatched table instead.
The SCSI CDB dissector really really want a real CDATA structure passed to it.
svn path=/trunk/; revision=15291
Diffstat (limited to 'epan/dissectors/packet-iscsi.c')
-rw-r--r-- | epan/dissectors/packet-iscsi.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/epan/dissectors/packet-iscsi.c b/epan/dissectors/packet-iscsi.c index 153ecb1054..461b518fe5 100644 --- a/epan/dissectors/packet-iscsi.c +++ b/epan/dissectors/packet-iscsi.c @@ -997,6 +997,15 @@ dissect_iscsi_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint off /* we have seen this one before, pick it up from the matched table */ cdata = (iscsi_conv_data_t *)g_hash_table_lookup (iscsi_req_matched, &ckey); + + /* We have seen this CDB before but could not find it in the + * matching table, meaning we never saw any DATA or RESPONSES + * to it, so instead pick up the original one from the + * unmatched table. + */ + if(!cdata){ + cdata = (iscsi_conv_data_t *)g_hash_table_lookup (iscsi_req_unmatched, &ckey); + } } |