No change in behaviour. A first step in removing user_struct.
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
hyper nonce_low;
[ignore] user_struct *compat;
[ignore] smbXsrv_tcon_table *tcon_table;
+ [ignore] uint32 homes_snum;
smbXsrv_session_auth0 *pending_auth;
} smbXsrv_session;
struct user_struct *next, *prev;
uint64_t vuid; /* Tag for this entry. */
- int homes_snum;
-
struct auth_session_info *session_info;
struct smbXsrv_session *session;
NTSTATUS *status)
{
struct smbd_server_connection *sconn = req->sconn;
+ struct smbXsrv_session *session = req->session;
const struct loadparm_substitution *lp_sub =
loadparm_s3_global_substitution();
uid_t euid;
without too many getpwnam() lookups. This is particulary nasty for
winbind usernames, where the share name isn't the same as unix
username.
-
- The snum of the homes share is stored on the vuser at session setup
- time.
*/
if (strequal(service_in,HOMES_NAME)) {
- if (vuser->homes_snum == -1) {
+ if (session->homes_snum == -1) {
DEBUG(2, ("[homes] share not available for "
"this user because it was not found "
"or created at session setup "
DEBUG(5, ("making a connection to [homes] service "
"created at session setup time\n"));
return make_connection_smb1(req, now,
- vuser->homes_snum,
+ session->homes_snum,
vuser,
dev, status);
- } else if ((vuser->homes_snum != -1)
+ } else if ((session->homes_snum != -1)
&& strequal(service_in,
- lp_const_servicename(vuser->homes_snum))) {
+ lp_const_servicename(session->homes_snum))) {
DEBUG(5, ("making a connection to 'homes' service [%s] "
"created at session setup time\n", service_in));
return make_connection_smb1(req, now,
- vuser->homes_snum,
+ session->homes_snum,
vuser,
dev, status);
}
return;
}
session->compat->session = session;
- session->compat->homes_snum = -1;
session->compat->session_info = session_info;
session->compat->vuid = session->global->session_wire_id;
DLIST_ADD(sconn->users, session->compat);
if (security_session_user_level(session_info, NULL) >= SECURITY_USER) {
is_authenticated = true;
- session->compat->homes_snum =
+ session->homes_snum =
register_homes_share(session_info->unix_info->unix_name);
}
session->compat->vuid = session->global->session_wire_id;
if (security_session_user_level(session_info, NULL) >= SECURITY_USER) {
- session->compat->homes_snum =
+ session->homes_snum =
register_homes_share(session_info->unix_info->unix_name);
}
return;
}
session->compat->session = session;
- session->compat->homes_snum = -1;
session->compat->session_info = session_info;
session->compat->vuid = session->global->session_wire_id;
DLIST_ADD(sconn->users, session->compat);
if (security_session_user_level(session_info, NULL) >= SECURITY_USER) {
is_authenticated = true;
- session->compat->homes_snum =
+ session->homes_snum =
register_homes_share(session_info->unix_info->unix_name);
}
return NT_STATUS_NO_MEMORY;
}
session->compat->session = session;
- session->compat->homes_snum = -1;
session->compat->session_info = session_info;
session->compat->vuid = session->global->session_wire_id;
DLIST_ADD(smb2req->sconn->users, session->compat);
smb2req->sconn->num_users++;
if (security_session_user_level(session_info, NULL) >= SECURITY_USER) {
- session->compat->homes_snum =
+ session->homes_snum =
register_homes_share(session_info->unix_info->unix_name);
}
session->compat->session_info = session_info;
session->compat->vuid = session->global->session_wire_id;
- session->compat->homes_snum =
+ session->homes_snum =
register_homes_share(session_info->unix_info->unix_name);
set_current_user_info(session_info->unix_info->sanitized_username,
const struct loadparm_substitution *lp_sub =
loadparm_s3_global_substitution();
struct smbXsrv_connection *conn = req->xconn;
+ struct smbXsrv_session *session = req->session;
const char *share = in_path;
char *service = NULL;
int snum = -1;
/* TODO: do more things... */
if (strequal(service,HOMES_NAME)) {
- if (compat_vuser->homes_snum == -1) {
+ if (session->homes_snum == -1) {
DEBUG(2, ("[homes] share not available for "
"user %s because it was not found "
"or created at session setup "
compat_vuser->session_info->unix_info->unix_name));
return NT_STATUS_BAD_NETWORK_NAME;
}
- snum = compat_vuser->homes_snum;
- } else if ((compat_vuser->homes_snum != -1)
+ snum = session->homes_snum;
+ } else if ((session->homes_snum != -1)
&& strequal(service,
- lp_servicename(talloc_tos(), lp_sub, compat_vuser->homes_snum))) {
- snum = compat_vuser->homes_snum;
+ lp_servicename(talloc_tos(), lp_sub, session->homes_snum))) {
+ snum = session->homes_snum;
} else {
snum = find_service(talloc_tos(), service, &service);
if (!service) {
session->idle_time = now;
session->status = NT_STATUS_MORE_PROCESSING_REQUIRED;
session->client = conn->client;
+ session->homes_snum = -1;
status = smbXsrv_session_global_allocate(table->global.db_ctx,
session,