From 09d0b152b7bd85aa01898af81bd166a7673ab886 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 29 Oct 2004 08:38:59 +0000 Subject: r3360: improved the deletion of tmp files. smbd now puts all tmp files in var/locks/smbd.tmp/ and deletes that dir on startup. (This used to be commit 7e942e7f1bd2c293a0e6648df43a96f8b8a2a295) --- source4/smbd/service.c | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) (limited to 'source4/smbd') diff --git a/source4/smbd/service.c b/source4/smbd/service.c index 33c0d5fcbd..d9841b63b2 100644 --- a/source4/smbd/service.c +++ b/source4/smbd/service.c @@ -356,26 +356,37 @@ void service_close_listening_sockets(struct server_context *srv_ctx) TDB_CLEAR_IF_FIRST. Unfortunately TDB_CLEAR_IF_FIRST is not efficient on unix systems due to the lack of scaling of the byte range locking system. So instead of putting the burden on tdb to - cleanup tmp files, this function deletes them. You need to expand - the list here as appropriate. + cleanup tmp files, this function deletes them. */ void service_cleanup_tmp_files(void) { - const char *list[] = { - "openfiles.tdb", - "brlock.tdb", - "unexpected.tdb"}; - int i; - for (i=0;id_name); + int ret = unlink(fname); + if (ret == -1 && errno != ENOENT && - errno != ENOTDIR) { - DEBUG(0,("Failed to cleanup '%s'\n", path)); - smb_panic("unable to cleanup temporary files\n"); + errno != EISDIR && + errno != EISDIR) { + DEBUG(0,("Unabled to delete '%s' - %s\n", + fname, strerror(errno))); + smb_panic("unable to cleanup tmp files"); } - talloc_free(path); + talloc_free(fname); } + closedir(dir); + + talloc_free(mem_ctx); } -- cgit