bool using_smb2;
int trans_num;
+ size_t num_users;
+ struct user_struct *users;
+
struct files_struct *files;
struct bitmap *file_bmap;
int real_max_open_files;
* this holds info on user ids that are already
* validated for this VC
*/
- user_struct *validated_users;
uint16_t next_vuid;
- int num_validated_vuids;
} sessions;
struct {
connection_struct *Connections;
if (vuid == UID_FIELD_INVALID)
return NULL;
- usp=sconn->smb1.sessions.validated_users;
+ usp=sconn->users;
for (;usp;usp=usp->next,count++) {
if (vuid == usp->vuid) {
switch (server_allocated) {
break;
}
if (count > 10) {
- DLIST_PROMOTE(sconn->smb1.sessions.validated_users,
- usp);
+ DLIST_PROMOTE(sconn->users, usp);
}
return usp;
}
TALLOC_FREE(vuser->gensec_security);
}
- DLIST_REMOVE(sconn->smb1.sessions.validated_users, vuser);
+ DLIST_REMOVE(sconn->users, vuser);
+ SMB_ASSERT(sconn->num_users > 0);
+ sconn->num_users--;
/* clear the vuid from the 'cache' on each connection, and
from the vuid 'owner' of connections */
conn_clear_vuid_caches(sconn, vuid);
TALLOC_FREE(vuser);
- sconn->smb1.sessions.num_validated_vuids--;
}
/****************************************************************************
return;
}
- while (sconn->smb1.sessions.validated_users != NULL) {
- invalidate_vuid(sconn,
- sconn->smb1.sessions.validated_users->vuid);
+ while (sconn->users != NULL) {
+ invalidate_vuid(sconn, sconn->users->vuid);
}
}
user_struct *vuser;
/* Limit allowed vuids to 16bits - VUID_OFFSET. */
- if (sconn->smb1.sessions.num_validated_vuids >= 0xFFFF-VUID_OFFSET) {
+ if (sconn->num_users >= 0xFFFF-VUID_OFFSET) {
return UID_FIELD_INVALID;
}
* to NTLMSSP.
*/
increment_next_vuid(&sconn->smb1.sessions.next_vuid);
- sconn->smb1.sessions.num_validated_vuids++;
- DLIST_ADD(sconn->smb1.sessions.validated_users, vuser);
+ sconn->num_users++;
+ DLIST_ADD(sconn->users, vuser);
+
return vuser->vuid;
}
{
const char *msg = (data && data->data)
? (const char *)data->data : "<NULL>";
- struct user_struct *validated_users;
struct id_cache_ref id;
struct smbd_server_connection *sconn =
talloc_get_type_abort(private_data,
struct smbd_server_connection);
- validated_users = sconn->smb1.sessions.validated_users;
-
if (!id_cache_ref_parse(msg, &id)) {
DEBUG(0, ("Invalid ?ID: %s\n", msg));
return;
}
- if (id_in_use(validated_users, &id)) {
+ if (id_in_use(sconn->users, &id)) {
exit_server_cleanly(msg);
}
id_cache_delete_from_cache(&id);
sconn->smb1.sessions.max_send = BUFFER_SIZE;
sconn->smb1.sessions.last_session_tag = UID_FIELD_INVALID;
/* this holds info on user ids that are already validated for this VC */
- sconn->smb1.sessions.validated_users = NULL;
sconn->smb1.sessions.next_vuid = VUID_OFFSET;
- sconn->smb1.sessions.num_validated_vuids = 0;
conn_init(sconn);
if (!init_dptrs(sconn)) {
session->compat_vuser->session_info = session->session_info;
session->compat_vuser->session_keystr = NULL;
session->compat_vuser->vuid = session->vuid;
- DLIST_ADD(session->sconn->smb1.sessions.validated_users, session->compat_vuser);
+ DLIST_ADD(session->sconn->users, session->compat_vuser);
+ session->sconn->num_users++;
if (security_session_user_level(session->session_info, NULL) >= SECURITY_USER) {
session->compat_vuser->homes_snum =