Merged revisions 134917 via svnmerge from

https://origsvn.digium.com/svn/asterisk/trunk

................
r134917 | russell | 2008-07-31 14:39:50 -0500 (Thu, 31 Jul 2008) | 17 lines

Merged revisions 134915 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r134915 | russell | 2008-07-31 14:37:26 -0500 (Thu, 31 Jul 2008) | 9 lines

Get app_ices working again

(closes issue #12981)
Reported by: dlogan
Patches:
      20080709__app_ices_v2_update_trunk.diff uploaded by bbryant (license 36)
      20080709__app_ices_v2_update_14.diff uploaded by bbryant (license 36)
Tested by: bbryant

........

................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.0@134918 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.6.0
Russell Bryant 17 years ago
parent b346b35ea9
commit a6439b01e2

@ -44,8 +44,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/module.h" #include "asterisk/module.h"
#include "asterisk/translate.h" #include "asterisk/translate.h"
#define ICES "/usr/bin/ices" #define path_BIN "/usr/bin/"
#define LOCAL_ICES "/usr/local/bin/ices" #define path_LOCAL "/usr/local/bin/"
static char *app = "ICES"; static char *app = "ICES";
@ -54,7 +54,9 @@ static char *synopsis = "Encode and stream using 'ices'";
static char *descrip = static char *descrip =
" ICES(config.xml) Streams to an icecast server using ices\n" " ICES(config.xml) Streams to an icecast server using ices\n"
"(available separately). A configuration file must be supplied\n" "(available separately). A configuration file must be supplied\n"
"for ices (see examples/asterisk-ices.conf). \n"; "for ices (see contrib/asterisk-ices.xml). \n"
"\n"
"- ICES version 2 cient and server required.\n";
static int icesencode(char *filename, int fd) static int icesencode(char *filename, int fd)
@ -85,13 +87,23 @@ static int icesencode(char *filename, int fd)
if ((x != STDIN_FILENO) && (x != STDOUT_FILENO)) if ((x != STDIN_FILENO) && (x != STDOUT_FILENO))
close(x); close(x);
} }
/* Most commonly installed in /usr/local/bin */
execl(ICES, "ices", filename, (char *)NULL); /* Most commonly installed in /usr/local/bin
/* But many places has it in /usr/bin */ * But many places has it in /usr/bin
execl(LOCAL_ICES, "ices", filename, (char *)NULL); * As a last-ditch effort, try to use PATH
/* As a last-ditch effort, try to use PATH */ */
execlp("ices", "ices", filename, (char *)NULL); execl(path_LOCAL "ices2", "ices", filename, NULL);
ast_log(LOG_WARNING, "Execute of ices failed\n"); execl(path_BIN "ices2", "ices", filename, NULL);
execlp("ices2", "ices", filename, NULL);
ast_debug(1, "Couldn't find ices version 2, attempting to use ices version 1.");
execl(path_LOCAL "ices", "ices", filename, NULL);
execl(path_BIN "ices", "ices", filename, NULL);
execlp("ices", "ices", filename, NULL);
ast_log(LOG_WARNING, "Execute of ices failed, could not find command.\n");
close(fd);
_exit(0); _exit(0);
} }
@ -151,7 +163,6 @@ static int ices_exec(struct ast_channel *chan, void *data)
if (c) if (c)
*c = '\0'; *c = '\0';
res = icesencode(filename, fds[0]); res = icesencode(filename, fds[0]);
close(fds[0]);
if (res >= 0) { if (res >= 0) {
pid = res; pid = res;
for (;;) { for (;;) {
@ -182,6 +193,7 @@ static int ices_exec(struct ast_channel *chan, void *data)
ast_frfree(f); ast_frfree(f);
} }
} }
close(fds[0]);
close(fds[1]); close(fds[1]);
if (pid > -1) if (pid > -1)

Loading…
Cancel
Save