summaryrefslogtreecommitdiffstats
path: root/source/smbd/conn.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2000-04-28 21:09:26 +0000
committerJeremy Allison <jra@samba.org>2000-04-28 21:09:26 +0000
commit858eb53dc510d1b27c4f91045fa932a3ef546754 (patch)
tree1f29dc20793ed09d00555ace5375b15ae23b7496 /source/smbd/conn.c
parent3f655de1c764b9ee1472a111621d4317f19f624d (diff)
downloadsamba-858eb53dc510d1b27c4f91045fa932a3ef546754.tar.gz
samba-858eb53dc510d1b27c4f91045fa932a3ef546754.tar.xz
samba-858eb53dc510d1b27c4f91045fa932a3ef546754.zip
Moved deletion of vfs handle into smbd/conn.c as it was being done too
soon in smbd/service.c (file operations were being done after the handle was closed). It looks cleaner in smbd/conn.c as it is part of the closing of a conn struct anyway. Jeremy.
Diffstat (limited to 'source/smbd/conn.c')
-rw-r--r--source/smbd/conn.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/source/smbd/conn.c b/source/smbd/conn.c
index 83289b21848..1dc4ac9e7d9 100644
--- a/source/smbd/conn.c
+++ b/source/smbd/conn.c
@@ -164,6 +164,21 @@ free a conn structure
****************************************************************************/
void conn_free(connection_struct *conn)
{
+ /* Close dlopen() handle */
+
+ if (conn->vfs_conn->dl_handle != NULL) {
+ dlclose(conn->vfs_conn->dl_handle); /* should we check return val? */
+ }
+
+ /* Free vfs_connection_struct */
+
+ if (conn->vfs_conn != NULL) {
+ if (conn->vfs_conn->groups != NULL) {
+ free(conn->vfs_conn->groups);
+ }
+ free(conn->vfs_conn);
+ }
+
DLIST_REMOVE(Connections, conn);
if (conn->ngroups && conn->groups) {