Fix how we negotiate IMMEDIATE_DATA. It defaults to YES and is negotiated
unless one side said NO
This commit is contained in:
@@ -512,6 +512,7 @@ iscsi_set_immediate_data(struct iscsi_context *iscsi, enum iscsi_immediate_data
|
|||||||
}
|
}
|
||||||
|
|
||||||
iscsi->want_immediate_data = immediate_data;
|
iscsi->want_immediate_data = immediate_data;
|
||||||
|
iscsi->use_immediate_data = immediate_data;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1007,6 +1007,12 @@ iscsi_process_login_reply(struct iscsi_context *iscsi, struct iscsi_pdu *pdu,
|
|||||||
if (!strncmp(ptr, "ImmediateData=", 14)) {
|
if (!strncmp(ptr, "ImmediateData=", 14)) {
|
||||||
if (!strcmp(ptr + 14, "No")) {
|
if (!strcmp(ptr + 14, "No")) {
|
||||||
iscsi->use_immediate_data = ISCSI_IMMEDIATE_DATA_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 {
|
} else {
|
||||||
iscsi->use_immediate_data = ISCSI_IMMEDIATE_DATA_YES;
|
iscsi->use_immediate_data = ISCSI_IMMEDIATE_DATA_YES;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user