]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Bug 6864 - drop realtime priority on ALL external processes
authorTilghman Lesher <tilghman@meg.abyt.es>
Mon, 1 May 2006 20:44:24 +0000 (20:44 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Mon, 1 May 2006 20:44:24 +0000 (20:44 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@24019 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_externalivr.c
apps/app_festival.c
apps/app_ices.c
apps/app_mp3.c
apps/app_nbscat.c
apps/app_zapras.c
asterisk.c
include/asterisk/options.h
res/res_musiconhold.c

index a53a59532b922b56a93e0939460280f30eac41bb..b61ddd99a28a0fbbcad1f9c87959f2078e492ae9 100644 (file)
@@ -44,6 +44,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/module.h"
 #include "asterisk/linkedlists.h"
 #include "asterisk/app.h"
+#include "asterisk/options.h"
 
 static const char *tdesc = "External IVR Interface Application";
 
@@ -313,6 +314,9 @@ static int app_exec(struct ast_channel *chan, void *data)
                /* child process */
                int i;
 
+               if (option_highpriority)
+                       ast_set_priority(0);
+
                dup2(child_stdin[0], STDIN_FILENO);
                dup2(child_stdout[1], STDOUT_FILENO);
                dup2(child_stderr[1], STDERR_FILENO);
index d3bd1e9b9f36cb21d1df8fac9010b90ddff10cfd..de1830fd2b9fb01f885859383ee9ed2d3ed580b2 100644 (file)
@@ -53,6 +53,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/config.h"
 #include "asterisk/utils.h"
 #include "asterisk/lock.h"
+#include "asterisk/options.h"
 
 #define FESTIVAL_CONFIG "festival.conf"
 
@@ -136,6 +137,9 @@ static int send_waveform_to_fd(char *waveform, int length, int fd) {
                 if (x != fd)
                         close(x);
         }
+       if (option_highpriority)
+               ast_set_priority(0);
+
 /*IAS */
 #ifdef __PPC__  
        for( x=0; x<length; x+=2)
index 4c1505584cfa8a7c3cf3ba37a17b81512b2bae12..85f4159ec486a760722ec6a8b7b4ea8574610ff7 100644 (file)
@@ -44,6 +44,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/pbx.h"
 #include "asterisk/module.h"
 #include "asterisk/translate.h"
+#include "asterisk/options.h"
 
 #define ICES "/usr/bin/ices"
 #define LOCAL_ICES "/usr/local/bin/ices"
@@ -72,6 +73,8 @@ static int icesencode(char *filename, int fd)
                ast_log(LOG_WARNING, "Fork failed\n");
        if (res)
                return res;
+       if (option_highpriority)
+               ast_set_priority(0);
        dup2(fd, STDIN_FILENO);
        for (x=STDERR_FILENO + 1;x<256;x++) {
                if ((x != STDIN_FILENO) && (x != STDOUT_FILENO))
index ee78840eca256a720e6200235aba146efefb116b..31fc3209635253d25ceb27964a40e11a46c9db6b 100644 (file)
@@ -43,6 +43,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/pbx.h"
 #include "asterisk/module.h"
 #include "asterisk/translate.h"
+#include "asterisk/options.h"
 
 #define LOCAL_MPG_123 "/usr/local/bin/mpg123"
 #define MPG_123 "/usr/bin/mpg123"
@@ -71,6 +72,8 @@ static int mp3play(char *filename, int fd)
                ast_log(LOG_WARNING, "Fork failed\n");
        if (res)
                return res;
+       if (option_highpriority)
+               ast_set_priority(0);
        dup2(fd, STDOUT_FILENO);
        for (x=0;x<256;x++) {
                if (x != STDOUT_FILENO)
index e1fb921c471cc40dd94fdc93d2213f4afd2165e8..adc232373e50b63d541fe361c2490de7c359a043 100644 (file)
@@ -44,6 +44,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/pbx.h"
 #include "asterisk/module.h"
 #include "asterisk/translate.h"
+#include "asterisk/options.h"
 
 #define LOCAL_NBSCAT "/usr/local/bin/nbscat8k"
 #define NBSCAT "/usr/bin/nbscat8k"
@@ -75,6 +76,9 @@ static int NBScatplay(int fd)
                ast_log(LOG_WARNING, "Fork failed\n");
        if (res)
                return res;
+       if (option_highpriority)
+               ast_set_priority(0);
+
        dup2(fd, STDOUT_FILENO);
        for (x=0;x<256;x++) {
                if (x != STDOUT_FILENO)
index 4a94f34ba4e22b31e6df82b05aa50a99f8edd8b8..904badcb006a943813bfc17f552e97c2202755dd 100644 (file)
@@ -96,6 +96,10 @@ static pid_t spawn_ras(struct ast_channel *chan, char *args)
        /* Execute RAS on File handles */
        dup2(chan->fds[0], STDIN_FILENO);
 
+       /* Drop high priority */
+       if (option_highpriority)
+               ast_set_priority(0);
+
        /* Close other file descriptors */
        for (x=STDERR_FILENO + 1;x<1024;x++) 
                close(x);
index 5e1423e8607d082d3d8cfd8a2be2ab5a050ae2d1..c62442d09b5ab4c7454b87805c9956c37f015131 100644 (file)
@@ -443,6 +443,8 @@ int ast_safe_system(const char *s)
        pid = fork();
 
        if (pid == 0) {
+               if (option_highpriority)
+                       ast_set_priority(0);
                /* Close file descriptors and launch system command */
                for (x = STDERR_FILENO + 1; x < 4096; x++)
                        close(x);
index fd8f3aadb5e1997e15c81858b260ba8ac4604bf3..7a71cdcb04e9cc7d9725e5136d38ca71c6acf0b4 100644 (file)
@@ -44,6 +44,7 @@ extern int option_timestamp;
 extern int option_transcode_slin;
 extern int option_transmit_silence_during_record;
 extern int option_maxcalls;
+extern int option_highpriority;
 extern double option_maxload;
 extern int option_dontwarn;
 extern int option_priority_jumping;
index d31bf08ac0e2306ce2e79a6e7e47ef3575e85ac2..a90585b21704e92fcd0bc7fe07b5e7b1117af4ee 100644 (file)
@@ -440,6 +440,10 @@ static int spawn_mp3(struct mohclass *class)
        }
        if (!class->pid) {
                int x;
+
+               if (option_highpriority)
+                       ast_set_priority(0);
+
                close(fds[0]);
                /* Stdout goes to pipe */
                dup2(fds[1], STDOUT_FILENO);