summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLee Duncan <lduncan@suse.com>2018-10-04 16:26:26 -0700
committerLee Duncan <lduncan@suse.com>2018-10-04 16:26:26 -0700
commita37c4295a2e3f8712921a52db0d35d3506efb19b (patch)
treef30d15b181b9f948e984c431425623065e219d7e
parent6657b77f6f718edb2468f91378952b67ece44223 (diff)
downloadopen-iscsi-a37c4295a2e3f8712921a52db0d35d3506efb19b.tar.gz
Do not allow multiple sessions when nr_sessions=1
If a request is made to login to a target, creating a session, then another request is submitted so quickly that the first one has not completed, both requests can succeed, despite having nr_sessions=1 configured. Only allow multiple login requests if nr_sessions is greater than 1.
-rw-r--r--usr/session_mgmt.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/usr/session_mgmt.c b/usr/session_mgmt.c
index 596085b..0500f15 100644
--- a/usr/session_mgmt.c
+++ b/usr/session_mgmt.c
@@ -189,9 +189,11 @@ int iscsi_login_portal(void *data, struct list_head *list, struct node_rec *rec)
/*
* Ensure the record's 'multiple' flag is set so __iscsi_login_portal
- * will allow multiple logins.
+ * will allow multiple logins, but only if configured for more
+ * than one
*/
- rec->session.multiple = 1;
+ if (rec->session.nr_sessions > 1)
+ rec->session.multiple = 1;
for (i = session_count; i < rec->session.nr_sessions; ++i) {
log_debug(1, "%s: Creating session %d/%d", rec->iface.name,
i + 1, rec->session.nr_sessions);