diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index fe1ce349d6484e4269d4dc4c8914b8e54370d529..7343bb2e56e03f859c5dc9c00bc7698653619f16 100644 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -3745,54 +3745,6 @@ static void check_quota(struct vm_state *vms, char *mailbox) { #endif /* IMAP_STORAGE */ -static void cleanup_orphaned_lock_files(const char *base) -{ - DIR *dir; - struct dirent *e; - - dir = opendir(base); - if (!dir) { - /* Don't complain about this too loudly */ - ast_debug(2, "Unable to open `%s': %s\n", base, strerror(errno)); - return; - } - - while ((e = readdir(dir))) { - char *fullpath; - struct stat s; - - /* Always skip . and .. */ - if (!strcmp(e->d_name, ".") || !strcmp(e->d_name, "..")) { - continue; - } - - /* Build up the full path (using dynamic memory because PATH_MAX is crap) */ - if (ast_asprintf(&fullpath, "%s/%s", base, e->d_name) == -1) { - break; - } - - if (lstat(fullpath, &s) < 0) { - ast_free(fullpath); - continue; - } - - /* This is exposing an implementation detail of ast_lock_path, but it makes - * our life a bit easier */ - if (!strcmp(e->d_name, ".lock") && S_ISLNK(s.st_mode)) { - if (!ast_unlock_path(base)) { - ast_log(AST_LOG_NOTICE, "Cleaned up orphaned lock file: %s/.lock\n", base); - } - } else if (S_ISDIR(s.st_mode)) { - /* If it is a directory, let's dive down */ - cleanup_orphaned_lock_files(fullpath); - } - - ast_free(fullpath); - } - - closedir(dir); -} - /*! \brief Lock file path * only return failure if ast_lock_path returns 'timeout', * not if the path does not exist or any other reason @@ -15247,9 +15199,6 @@ static int load_module(void) /* compute the location of the voicemail spool directory */ snprintf(VM_SPOOL_DIR, sizeof(VM_SPOOL_DIR), "%s/voicemail/", ast_config_AST_SPOOL_DIR); - /* Now that we have a spool directory, clean up old lock files */ - cleanup_orphaned_lock_files(VM_SPOOL_DIR); - if (!(mwi_subscription_tps = ast_taskprocessor_get("app_voicemail", 0))) { ast_log(AST_LOG_WARNING, "failed to reference mwi subscription taskprocessor. MWI will not work\n"); } diff --git a/doc/CHANGES-staging/voicemail_lock_cleanup_revert.txt b/doc/CHANGES-staging/voicemail_lock_cleanup_revert.txt new file mode 100644 index 0000000000000000000000000000000000000000..500c9a4d7a76481a64ae731c5e32abaacbc776e5 --- /dev/null +++ b/doc/CHANGES-staging/voicemail_lock_cleanup_revert.txt @@ -0,0 +1,10 @@ +Subject: app_voicemail + +A feature was added in Asterisk 13.27.0 and 16.4.0 that removed lock files from +the Asterisk voicemail directory on startup. Some users that store their +voicemails on network storage devices experienced slow startup times due to the +relative expense of traversing the voicemail directory structure looking for +orphaned lock files. This feature has now been removed. + +Users who require the lock files to be removed at startup should modify their +startup scripts to do so before starting the asterisk process.