summaryrefslogtreecommitdiff
path: root/source3/smbd/conn.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/smbd/conn.c')
-rw-r--r--source3/smbd/conn.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/source3/smbd/conn.c b/source3/smbd/conn.c
index 83289b2184..1dc4ac9e7d 100644
--- a/source3/smbd/conn.c
+++ b/source3/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) {