At 13:40 26.11.2002 +0100, Stefan (metze) Metzmacher wrote:
we need a way to access vfs_handle in all module functions but don't make vfs_handle global!!! conn->vfs_private is the head of a DLIST and we need a way to access the right element of this list.

has anybody an idea???
the following small patch should make it possible.

the vfs_init functions gets vfs_handle

and the module can have a DLIST witch cantains the following struct
struct {
unsigned cnum;
struct smb_vfs_handle_struct *handle;
}

vfs_handle->conn->cnum contains a unique connection number with this as key we can find the pointer to the vfs_handle used for the current connection.


metze
-----------------------------------------------------------------------------
Stefan "metze" Metzmacher <[EMAIL PROTECTED]>
diff -Npur --exclude=CVS --exclude=*.bak --exclude=*.o --exclude=*.po --exclude=.#* 
HEAD/source/include/smb.h HEAD-fix/source/include/smb.h
--- HEAD/source/include/smb.h   Fri Nov  8 07:25:32 2002
+++ HEAD-fix/source/include/smb.h       Tue Nov 26 14:11:55 2002
@@ -428,7 +428,8 @@ typedef struct smb_vfs_handle_struct
     /* Handle on dlopen() call */
     void *handle;
     struct smb_vfs_handle_struct  *next, *prev;
-    
+
+    struct connection_struct *conn;
 } smb_vfs_handle_struct;
 
 typedef struct connection_struct
diff -Npur --exclude=CVS --exclude=*.bak --exclude=*.o --exclude=*.po --exclude=.#* 
HEAD/source/smbd/vfs.c HEAD-fix/source/smbd/vfs.c
--- HEAD/source/smbd/vfs.c      Thu Oct 24 11:11:00 2002
+++ HEAD-fix/source/smbd/vfs.c  Tue Nov 26 14:09:20 2002
@@ -238,6 +238,7 @@ BOOL smbd_vfs_init(connection_struct *co
                                        handle = (struct smb_vfs_handle_struct *) 
smb_xmalloc(sizeof(smb_vfs_handle_struct));
                                        /* Loadable object file */
                                        handle->handle = NULL;
+                                       handle->conn = conn;
                                        DLIST_ADD(conn->vfs_private, handle)
                                        vfs_module = NULL;
                                        if (vfs_path) {


Reply via email to