r23172: Change shutdown_other_smbds to use connections_traverse instead of
authorVolker Lendecke <vlendec@samba.org>
Mon, 28 May 2007 12:39:39 +0000 (12:39 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:22:52 +0000 (12:22 -0500)
session_traverse.

source/smbd/session.c
source/smbd/sesssetup.c

index cd7511430e3a70f70f17999db0207924839a5a69..f55576a7becb24a7719a82df85122add88830e3a 100644 (file)
@@ -202,8 +202,9 @@ void session_yield(user_struct *vuser)
 /********************************************************************
 ********************************************************************/
 
-BOOL session_traverse(int (*fn)(TDB_CONTEXT *, TDB_DATA, TDB_DATA, void *),
-                     void *state)
+static BOOL session_traverse(int (*fn)(TDB_CONTEXT *, TDB_DATA, TDB_DATA,
+                                      void *),
+                            void *state)
 {
        if (!session_init()) {
                DEBUG(3, ("No tdb opened\n"));
index ccfc22598d7a2f0d13523b1849ddf6967667db86..42a71f8ad7627e57e03727d9854c9f5e34cb7b21 100644 (file)
@@ -1174,25 +1174,26 @@ static int reply_sesssetup_and_X_spnego(connection_struct *conn, char *inbuf,
  a new session setup with VC==0 is ignored.
 ****************************************************************************/
 
-static int shutdown_other_smbds(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf,
-                               void *p)
+static int shutdown_other_smbds(struct db_record *rec,
+                               const struct connections_key *key,
+                               const struct connections_data *crec,
+                               void *private_data)
 {
-       struct sessionid *sessionid = (struct sessionid *)dbuf.dptr;
-       const char *ip = (const char *)p;
+       const char *ip = (const char *)private_data;
 
-       if (!process_exists(sessionid->pid)) {
+       if (!process_exists(crec->pid)) {
                return 0;
        }
 
-       if (procid_is_me(&sessionid->pid)) {
+       if (procid_is_me(&crec->pid)) {
                return 0;
        }
 
-       if (strcmp(ip, sessionid->ip_addr) != 0) {
+       if (strcmp(ip, crec->addr) != 0) {
                return 0;
        }
 
-       messaging_send(smbd_messaging_context(), sessionid->pid, MSG_SHUTDOWN,
+       messaging_send(smbd_messaging_context(), crec->pid, MSG_SHUTDOWN,
                       &data_blob_null);
        return 0;
 }
@@ -1205,7 +1206,7 @@ static void setup_new_vc_session(void)
        invalidate_all_vuids();
 #endif
        if (lp_reset_on_zero_vc()) {
-               session_traverse(shutdown_other_smbds, client_addr());
+               connections_forall(shutdown_other_smbds, client_addr());
        }
 }