Lines Matching defs:user

13 #include "mail-user.h"
20 static size_t mail_user_memsize(const struct mail_user *user)
22 return sizeof(*user) + strlen(user->name) + 1;
27 struct mail_user *user;
30 user = hash_table_lookup(mail_users_hash, username);
31 if (user != NULL) {
32 mail_user_refresh(user, NULL);
33 return user;
40 user = i_malloc(MALLOC_ADD(sizeof(struct mail_user), stats_alloc_size()));
41 user->stats = (void *)(user + 1);
42 user->name = i_strdup(username);
43 user->reset_timestamp = ioloop_time;
44 user->domain = mail_domain_login_create(domain);
46 hash_table_insert(mail_users_hash, user->name, user);
47 DLLIST_PREPEND_FULL(&stable_mail_users, user,
49 DLLIST2_APPEND_FULL(&mail_users_head, &mail_users_tail, user,
51 DLLIST_PREPEND_FULL(&user->domain->users, user,
53 mail_domain_ref(user->domain);
55 user->last_update = ioloop_timeval;
56 global_memory_alloc(mail_user_memsize(user));
57 return user;
60 void mail_user_disconnected(struct mail_user *user)
62 mail_domain_disconnected(user->domain);
70 void mail_user_ref(struct mail_user *user)
72 user->refcount++;
77 struct mail_user *user = *_user;
79 i_assert(user->refcount > 0);
80 user->refcount--;
85 static void mail_user_free(struct mail_user *user)
87 i_assert(user->refcount == 0);
88 i_assert(user->sessions == NULL);
90 global_memory_free(mail_user_memsize(user));
91 hash_table_remove(mail_users_hash, user->name);
92 DLLIST_REMOVE_FULL(&stable_mail_users, user,
94 DLLIST2_REMOVE_FULL(&mail_users_head, &mail_users_tail, user,
96 DLLIST_REMOVE_FULL(&user->domain->users, user,
98 mail_domain_unref(&user->domain);
100 i_free(user->name);
101 i_free(user);
104 void mail_user_refresh(struct mail_user *user,
108 stats_add(user->stats, diff_stats);
109 user->last_update = ioloop_timeval;
110 DLLIST2_REMOVE_FULL(&mail_users_head, &mail_users_tail, user,
112 DLLIST2_APPEND_FULL(&mail_users_head, &mail_users_tail, user,
114 mail_domain_refresh(user->domain, diff_stats);
119 struct mail_user *user;
124 /* <user> <service> <diff stats> */
130 user = mail_user_login(args[0]);
136 user->name, service);
143 user->name, service, error);
146 mail_user_refresh(user, diff_stats);