aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-iscsi.c
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2005-08-11 10:08:45 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2005-08-11 10:08:45 +0000
commit1f0993e47e36db3f60e0d061d1da2da5cafbcba5 (patch)
treedf6d134cec88ea9b7aeee37f4f52a161bc5839e0 /epan/dissectors/packet-iscsi.c
parent030981ff553f6697a372edfc7098d17c91a0e549 (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.c9
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);
+ }
}