]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
automerge commit
authorAutomerge script <automerge@asterisk.org>
Wed, 12 Jul 2006 16:02:19 +0000 (16:02 +0000)
committerAutomerge script <automerge@asterisk.org>
Wed, 12 Jul 2006 16:02:19 +0000 (16:02 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@37455 65c4cc65-6c06-0410-ace0-fbb531ad65f3

app.c
apps/app_voicemail.c
channels/chan_iax2.c

diff --git a/app.c b/app.c
index 64fa49fa79e1ba45d45a2b286f35c6ef7623a545..a477769042f8208bc9336b8daab767cd2dee80dd 100644 (file)
--- a/app.c
+++ b/app.c
@@ -1167,11 +1167,13 @@ enum AST_LOCK_RESULT ast_lock_path(const char *path)
        time(&start);
        while (((res = link(fs, s)) < 0) && (errno == EEXIST) && (time(NULL) - start < 5))
                usleep(1);
+
+       unlink(fs);
+
        if (res) {
                ast_log(LOG_WARNING, "Failed to lock path '%s': %s\n", path, strerror(errno));
                return AST_LOCK_TIMEOUT;
        } else {
-               unlink(fs);
                ast_log(LOG_DEBUG, "Locked path '%s'\n", path);
                return AST_LOCK_SUCCESS;
        }
@@ -1180,12 +1182,22 @@ enum AST_LOCK_RESULT ast_lock_path(const char *path)
 int ast_unlock_path(const char *path)
 {
        char *s;
+       int res;
+
        s = alloca(strlen(path) + 10);
-       if (!s)
+       if (!s) {
+               ast_log(LOG_WARNING, "Out of memory!\n");
                return -1;
+       }
+
        snprintf(s, strlen(path) + 9, "%s/%s", path, ".lock");
-       ast_log(LOG_DEBUG, "Unlocked path '%s'\n", path);
-       return unlink(s);
+
+       if ((res = unlink(s)))
+               ast_log(LOG_ERROR, "Could not unlock path '%s': %s\n", path, strerror(errno));
+       else
+               ast_log(LOG_DEBUG, "Unlocked path '%s'\n", path);
+
+       return res;
 }
 
 int ast_record_review(struct ast_channel *chan, const char *playfile, const char *recordfile, int maxtime, const char *fmt, int *duration, const char *path) 
index 96973623f305f5fe4f3a0a5dba55025529c4d58a..4402d4d4fee6f2a9774951fea40b601a965f1483 100644 (file)
@@ -2617,7 +2617,8 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, struct leave_vm_
                                } else if (ast_fileexists(tmptxtfile, NULL, NULL) <= 0) {
                                        if (option_debug) 
                                                ast_log(LOG_DEBUG, "The recorded media file is gone, so we should remove the .txt file too!\n");
-                                       unlink(tmptxtfile);     
+                                       unlink(tmptxtfile);
+                                       ast_unlock_path(dir);
                                } else {
                                        for (;;) {
                                                make_file(fn, sizeof(fn), dir, msgnum);
index 1ce7fb349dc693ebdef2a92a0c29078e00e96ba5..f75b21c400b514f037f4e609df697a446642a5bb 100644 (file)
@@ -147,6 +147,7 @@ static char context[80] = "default";
 static char language[MAX_LANGUAGE] = "";
 static char regcontext[AST_MAX_CONTEXT] = "";
 
+static int maxauthreq = 0;
 static int max_retries = 4;
 static int ping_time = 20;
 static int lagrq_time = 10;
@@ -8432,6 +8433,7 @@ static struct iax2_user *build_user(const char *name, struct ast_variable *v, in
        
        if (user) {
                memset(user, 0, sizeof(struct iax2_user));
+               user->maxauthreq = maxauthreq;
                user->curauthreq = oldcurauthreq;
                user->prefs = prefs;
                user->capability = iax2_capability;
@@ -8868,6 +8870,10 @@ static int set_config(char *config_file, int reload)
                        }
                } else if (!strcasecmp(v->name, "language")) {
                         ast_copy_string(language, v->value, sizeof(language));
+               } else if (!strcasecmp(v->name, "maxauthreq")) {
+                       maxauthreq = atoi(v->value);
+                       if (maxauthreq < 0)
+                               maxauthreq = 0;
                } /*else if (strcasecmp(v->name,"type")) */
                /*      ast_log(LOG_WARNING, "Ignoring %s\n", v->name); */
                v = v->next;