diff options
Diffstat (limited to 'source3/smbd/session.c')
-rw-r--r-- | source3/smbd/session.c | 52 |
1 files changed, 7 insertions, 45 deletions
diff --git a/source3/smbd/session.c b/source3/smbd/session.c index dade953ec1..05a7b24da2 100644 --- a/source3/smbd/session.c +++ b/source3/smbd/session.c @@ -163,54 +163,16 @@ void session_yield(user_struct *vuser) tdb_delete(tdb, key); } -static BOOL session_traverse(int (*fn)(TDB_CONTEXT *, TDB_DATA, TDB_DATA, void *), void *state) +BOOL session_traverse(int (*fn)(TDB_CONTEXT *, TDB_DATA, TDB_DATA, void *), void *state) { - if (!tdb) { - DEBUG(3, ("No tdb opened\n")); - return False; - } + if (!tdb) { + DEBUG(3, ("No tdb opened\n")); + return False; + } - tdb_traverse(tdb, fn, state); - return True; + tdb_traverse(tdb, fn, state); + return True; } -struct session_list { - int count; - struct sessionid *sessions; -}; - -static int gather_sessioninfo(TDB_CONTEXT *stdb, TDB_DATA kbuf, TDB_DATA dbuf, - void *state) -{ - struct session_list *sesslist = (struct session_list *) state; - const struct sessionid *current = (const struct sessionid *) dbuf.dptr; - - sesslist->count += 1; - sesslist->sessions = REALLOC(sesslist->sessions, sesslist->count * - sizeof(struct sessionid)); - - memcpy(&sesslist->sessions[sesslist->count - 1], current, - sizeof(struct sessionid)); - DEBUG(7,("gather_sessioninfo session from %s@%s\n", - current->username, current->remote_machine)); - return 0; -} -int list_sessions(struct sessionid **session_list) -{ - struct session_list sesslist; - - sesslist.count = 0; - sesslist.sessions = NULL; - - if (!session_traverse(gather_sessioninfo, (void *) &sesslist)) { - DEBUG(3, ("Session traverse failed\n")); - SAFE_FREE(sesslist.sessions); - *session_list = NULL; - return 0; - } - *session_list = sesslist.sessions; - return sesslist.count; -} - |