diff options
Diffstat (limited to 'source3/smbd')
-rw-r--r-- | source3/smbd/password.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/source3/smbd/password.c b/source3/smbd/password.c index 3be1516cf0..decac845ac 100644 --- a/source3/smbd/password.c +++ b/source3/smbd/password.c @@ -252,27 +252,30 @@ int register_vuid(auth_serversupplied_info *server_info, DATA_BLOB session_key, } /* Register a home dir service for this user iff + (a) This is not a guest connection, (b) we have a home directory defined - If a share exists by this name (autoloaded or not) reuse it so - long as the home directory is the same as the share directory. */ + (c) there s not an existing static share by that name + + If a share exists by this name (autoloaded or not) reuse it . */ + + vuser->homes_snum = -1; - if ( (!vuser->guest) && vuser->unix_homedir && *(vuser->unix_homedir)) { + if ( (!vuser->guest) && vuser->unix_homedir && *(vuser->unix_homedir)) + { int servicenumber = lp_servicenumber(vuser->user.unix_name); + if ( servicenumber == -1 ) { DEBUG(3, ("Adding homes service for user '%s' using home directory: '%s'\n", vuser->user.unix_name, vuser->unix_homedir)); vuser->homes_snum = add_home_service(vuser->user.unix_name, vuser->user.unix_name, vuser->unix_homedir); - } else if (strcmp(lp_pathname(servicenumber),vuser->unix_homedir) == 0) { - DEBUG(3, ("Reusing homes service for user '%s' using home directory: '%s'\n", - vuser->user.unix_name, vuser->unix_homedir)); - + } else { + DEBUG(3, ("Using static (or previously created) service for user '%s'; path = '%s'\n", + vuser->user.unix_name, lp_path(servicenumber) )); vuser->homes_snum = servicenumber; } - } else { - vuser->homes_snum = -1; - } + } if (srv_is_signing_negotiated() && !vuser->guest && !srv_signing_started()) { /* Try and turn on server signing on the first non-guest sessionsetup. */ |