diff --git a/lib/connect.c b/lib/connect.c index 8afe77b..c108d3d 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -412,6 +412,7 @@ int iscsi_reconnect(struct iscsi_context *old_iscsi) iscsi->tcp_keepintvl = old_iscsi->tcp_keepintvl; iscsi->tcp_syncnt = old_iscsi->tcp_syncnt; iscsi->cache_allocations = old_iscsi->cache_allocations; + iscsi->scsi_timeout = old_iscsi->scsi_timeout; iscsi->reconnect_max_retries = old_iscsi->reconnect_max_retries; diff --git a/lib/pdu.c b/lib/pdu.c index 8e48004..09ee141 100644 --- a/lib/pdu.c +++ b/lib/pdu.c @@ -75,7 +75,7 @@ void iscsi_dump_pdu_header(struct iscsi_context *iscsi, unsigned char *data) { for (i=0;ipending_reconnect = 1; } - int iscsi_process_reject(struct iscsi_context *iscsi, struct iscsi_in_pdu *in) { @@ -348,9 +347,7 @@ int iscsi_process_reject(struct iscsi_context *iscsi, itt = scsi_get_uint32(&in->data[16]); - if (iscsi->log_level > 1) { - iscsi_dump_pdu_header(iscsi, in->data); - } + iscsi_dump_pdu_header(iscsi, in->data); for (pdu = iscsi->waitpdu; pdu; pdu = pdu->next) { if (pdu->itt == itt) { @@ -706,8 +703,13 @@ iscsi_timeout_scan(struct iscsi_context *iscsi) continue; } ISCSI_LIST_REMOVE(&iscsi->outqueue, pdu); - pdu->callback(iscsi, SCSI_STATUS_TIMEOUT, - NULL, pdu->private_data); + iscsi_set_error(iscsi, "command timed out"); + iscsi_dump_pdu_header(iscsi, pdu->outdata.data); + if (pdu->callback) { + pdu->callback(iscsi, SCSI_STATUS_TIMEOUT, + NULL, pdu->private_data); + } + iscsi_free_pdu(iscsi, pdu); } for (pdu = iscsi->waitpdu; pdu; pdu = next_pdu) { next_pdu = pdu->next; @@ -721,7 +723,12 @@ iscsi_timeout_scan(struct iscsi_context *iscsi) continue; } ISCSI_LIST_REMOVE(&iscsi->waitpdu, pdu); - pdu->callback(iscsi, SCSI_STATUS_TIMEOUT, - NULL, pdu->private_data); + iscsi_set_error(iscsi, "command timed out"); + iscsi_dump_pdu_header(iscsi, pdu->outdata.data); + if (pdu->callback) { + pdu->callback(iscsi, SCSI_STATUS_TIMEOUT, + NULL, pdu->private_data); + } + iscsi_free_pdu(iscsi, pdu); } }