diff options
author | Lee Duncan <lduncan@suse.com> | 2018-10-04 16:26:26 -0700 |
---|---|---|
committer | Lee Duncan <lduncan@suse.com> | 2018-10-04 16:26:26 -0700 |
commit | a37c4295a2e3f8712921a52db0d35d3506efb19b (patch) | |
tree | f30d15b181b9f948e984c431425623065e219d7e | |
parent | 6657b77f6f718edb2468f91378952b67ece44223 (diff) | |
download | open-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.c | 6 |
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); |