Fix how we negotiate IMMEDIATE_DATA. It defaults to YES and is negotiated

unless one side said NO
This commit is contained in:
Ronnie Sahlberg
2012-12-01 11:21:24 -08:00
parent 04970ef95e
commit 56707bcdf9
2 changed files with 7 additions and 0 deletions

View File

@@ -512,6 +512,7 @@ iscsi_set_immediate_data(struct iscsi_context *iscsi, enum iscsi_immediate_data
}
iscsi->want_immediate_data = immediate_data;
iscsi->use_immediate_data = immediate_data;
return 0;
}

View File

@@ -1007,6 +1007,12 @@ iscsi_process_login_reply(struct iscsi_context *iscsi, struct iscsi_pdu *pdu,
if (!strncmp(ptr, "ImmediateData=", 14)) {
if (!strcmp(ptr + 14, "No")) {
iscsi->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO;
} else if (iscsi->want_immediate_data == ISCSI_IMMEDIATE_DATA_NO) {
/* If we negotiated NO, it doesnt matter what
* the target said. ImmediateData is NO.
*/
iscsi->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO;
} else {
iscsi->use_immediate_data = ISCSI_IMMEDIATE_DATA_YES;
}