From 47e2b8918e0f34127bce4d56f1d2b91f4effc894 Mon Sep 17 00:00:00 2001 From: Peter Lieven Date: Fri, 27 Mar 2015 22:09:44 +0100 Subject: [PATCH] socket: Data-Out PDUs may carry a CmdSN < ExpCmdSN Signed-off-by: Peter Lieven --- lib/socket.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/socket.c b/lib/socket.c index 1ca2bfe..626fca6 100644 --- a/lib/socket.c +++ b/lib/socket.c @@ -650,9 +650,10 @@ iscsi_write_to_socket(struct iscsi_context *iscsi) return 0; } /* pop first element of the outqueue */ - if (iscsi_serial32_compare(iscsi->outqueue->cmdsn, iscsi->expcmdsn) < 0) { - iscsi_set_error(iscsi, "iscsi_write_to_scoket: outqueue[0]->cmdsn < expcmdsn (%08x < %08x)", - iscsi->outqueue->cmdsn, iscsi->expcmdsn); + if (iscsi_serial32_compare(iscsi->outqueue->cmdsn, iscsi->expcmdsn) < 0 && + (iscsi->outqueue->outdata.data[0] & 0x3f) != ISCSI_PDU_DATA_OUT) { + iscsi_set_error(iscsi, "iscsi_write_to_scoket: outqueue[0]->cmdsn < expcmdsn (%08x < %08x) opcode %02x", + iscsi->outqueue->cmdsn, iscsi->expcmdsn, iscsi->outqueue->outdata.data[0] & 0x3f); return -1; } iscsi->outqueue_current = iscsi->outqueue;