r6498: Add comments in line with those I already added to 3.0.
[samba.git] / source / smb_server / conn.c
index cdfd3a0bcd60b557f421e849293d70ed476f9a99..6ca8e4286cc8e84945e4b589be030e7c2a4cbdfb 100644 (file)
 */
 
 #include "includes.h"
+#include "system/filesys.h"
+#include "dlinklist.h"
+#include "smb_server/smb_server.h"
+#include "smbd/service_stream.h"
+
 
 /****************************************************************************
 init the tcon structures
 ****************************************************************************/
-void conn_init(struct smbsrv_connection *smb_conn)
+void smbsrv_tcon_init(struct smbsrv_connection *smb_conn)
 {
        smb_conn->tree.idtree_tid = idr_init(smb_conn);
 }
@@ -32,18 +37,27 @@ void conn_init(struct smbsrv_connection *smb_conn)
 /****************************************************************************
 find a tcon given a cnum
 ****************************************************************************/
-struct smbsrv_tcon *conn_find(struct smbsrv_connection *smb_conn, uint_t cnum)
+struct smbsrv_tcon *smbsrv_tcon_find(struct smbsrv_connection *smb_conn, uint_t tid)
 {
-       return idr_find(smb_conn->tree.idtree_tid, cnum);
+       return idr_find(smb_conn->tree.idtree_tid, tid);
 }
 
 /*
   destroy a connection structure
 */
-static int conn_destructor(void *ptr)
+static int smbsrv_tcon_destructor(void *ptr)
 {
        struct smbsrv_tcon *tcon = ptr;
-       idr_remove(tcon->smb_conn->tree.idtree_tid, tcon->cnum);
+
+
+       DEBUG(3,("%s closed connection to service %s\n",
+                socket_get_peer_addr(tcon->smb_conn->connection->socket, tcon),
+                lp_servicename(tcon->service)));
+
+       /* tell the ntvfs backend that we are disconnecting */
+       ntvfs_disconnect(tcon);
+
+       idr_remove(tcon->smb_conn->tree.idtree_tid, tcon->tid);
        DLIST_REMOVE(tcon->smb_conn->tree.tcons, tcon);
        return 0;
 }
@@ -51,12 +65,12 @@ static int conn_destructor(void *ptr)
 /*
   find first available connection slot
 */
-struct smbsrv_tcon *conn_new(struct smbsrv_connection *smb_conn)
+struct smbsrv_tcon *smbsrv_tcon_new(struct smbsrv_connection *smb_conn)
 {
        struct smbsrv_tcon *tcon;
        int i;
 
-       tcon = talloc_zero_p(smb_conn, struct smbsrv_tcon);
+       tcon = talloc_zero(smb_conn, struct smbsrv_tcon);
        if (!tcon) return NULL;
 
        i = idr_get_new(smb_conn->tree.idtree_tid, tcon, UINT16_MAX);
@@ -65,34 +79,12 @@ struct smbsrv_tcon *conn_new(struct smbsrv_connection *smb_conn)
                return NULL;
        }
 
-       tcon->cnum = i;
+       tcon->tid = i;
        tcon->smb_conn = smb_conn;
 
-       talloc_set_destructor(tcon, conn_destructor);
+       talloc_set_destructor(tcon, smbsrv_tcon_destructor);
 
        DLIST_ADD(smb_conn->tree.tcons, tcon);
 
        return tcon;
 }
-
-/****************************************************************************
-close all tcon structures
-****************************************************************************/
-void conn_close_all(struct smbsrv_connection *smb_conn)
-{
-       struct smbsrv_tcon *tcon, *next;
-       for (tcon=smb_conn->tree.tcons;tcon;tcon=next) {
-               next=tcon->next;
-               close_cnum(tcon);
-       }
-}
-
-
-/****************************************************************************
- Free a tcon structure.
-****************************************************************************/
-void conn_free(struct smbsrv_connection *smb_conn, struct smbsrv_tcon *tcon)
-{
-       talloc_free(tcon);
-}
-