LOGIN commands NEVER use header digest since even if the login is spanning multiple PDU sequences it is still treated as one logical operation.
Dont update the header_digest setting until we have finished login and are transitioning to the full-feature phase.
This commit is contained in:
+1
-4
@@ -1016,13 +1016,9 @@ iscsi_process_login_reply(struct iscsi_context *iscsi, struct iscsi_pdu *pdu,
|
|||||||
|
|
||||||
if (!strncmp(ptr, "HeaderDigest=", 13)) {
|
if (!strncmp(ptr, "HeaderDigest=", 13)) {
|
||||||
if (!strcmp(ptr + 13, "CRC32C")) {
|
if (!strcmp(ptr + 13, "CRC32C")) {
|
||||||
iscsi->header_digest
|
|
||||||
= ISCSI_HEADER_DIGEST_CRC32C;
|
|
||||||
iscsi->want_header_digest
|
iscsi->want_header_digest
|
||||||
= ISCSI_HEADER_DIGEST_CRC32C;
|
= ISCSI_HEADER_DIGEST_CRC32C;
|
||||||
} else {
|
} else {
|
||||||
iscsi->header_digest
|
|
||||||
= ISCSI_HEADER_DIGEST_NONE;
|
|
||||||
iscsi->want_header_digest
|
iscsi->want_header_digest
|
||||||
= ISCSI_HEADER_DIGEST_NONE;
|
= ISCSI_HEADER_DIGEST_NONE;
|
||||||
}
|
}
|
||||||
@@ -1103,6 +1099,7 @@ iscsi_process_login_reply(struct iscsi_context *iscsi, struct iscsi_pdu *pdu,
|
|||||||
&& (in->hdr[1] & ISCSI_PDU_LOGIN_NSG_FF) == ISCSI_PDU_LOGIN_NSG_FF) {
|
&& (in->hdr[1] & ISCSI_PDU_LOGIN_NSG_FF) == ISCSI_PDU_LOGIN_NSG_FF) {
|
||||||
iscsi->is_loggedin = 1;
|
iscsi->is_loggedin = 1;
|
||||||
iscsi->itt++;
|
iscsi->itt++;
|
||||||
|
iscsi->header_digest = iscsi->want_header_digest;
|
||||||
pdu->callback(iscsi, SCSI_STATUS_GOOD, NULL, pdu->private_data);
|
pdu->callback(iscsi, SCSI_STATUS_GOOD, NULL, pdu->private_data);
|
||||||
} else {
|
} else {
|
||||||
if (iscsi_login_async(iscsi, pdu->callback, pdu->private_data) != 0) {
|
if (iscsi_login_async(iscsi, pdu->callback, pdu->private_data) != 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user