summaryrefslogtreecommitdiff
path: root/source3/smbd
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
commit46d66938e7e683586746b18583ce1670f0ad3544 (patch)
tree54304dfe0f618b665b406852f9ee6d6e3e5ce5c5 /source3/smbd
parent9a5eb068ab32418e793d482db1f078f147f9ee08 (diff)
downloadsamba-46d66938e7e683586746b18583ce1670f0ad3544.tar.gz
samba-46d66938e7e683586746b18583ce1670f0ad3544.tar.bz2
samba-46d66938e7e683586746b18583ce1670f0ad3544.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. (This used to be commit 858eb53dc510d1b27c4f91045fa932a3ef546754)
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/conn.c15
-rw-r--r--source3/smbd/service.c16
2 files changed, 15 insertions, 16 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) {
diff --git a/source3/smbd/service.c b/source3/smbd/service.c
index 8d04ce36e1..8e04f7e989 100644
--- a/source3/smbd/service.c
+++ b/source3/smbd/service.c
@@ -654,21 +654,6 @@ void close_cnum(connection_struct *conn, uint16 vuid)
}
- /* 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);
- }
-
yield_connection(conn,
lp_servicename(SNUM(conn)),
lp_max_connections(SNUM(conn)));
@@ -697,6 +682,5 @@ void close_cnum(connection_struct *conn, uint16 vuid)
standard_sub_conn(conn,cmd);
smbrun(cmd,NULL,False);
}
-
conn_free(conn);
}