mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 20:20:07 +00:00
Version 0.1.9 from FTP
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@367 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
14
asterisk.c
14
asterisk.c
@@ -20,6 +20,8 @@
|
|||||||
#include <asterisk/ulaw.h>
|
#include <asterisk/ulaw.h>
|
||||||
#include <asterisk/callerid.h>
|
#include <asterisk/callerid.h>
|
||||||
#include <asterisk/module.h>
|
#include <asterisk/module.h>
|
||||||
|
#include <asterisk/image.h>
|
||||||
|
#include <fcntl.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <sched.h>
|
#include <sched.h>
|
||||||
@@ -102,8 +104,9 @@ static void *netconsole(void *vconsole)
|
|||||||
}
|
}
|
||||||
if (FD_ISSET(con->fd, &rfds)) {
|
if (FD_ISSET(con->fd, &rfds)) {
|
||||||
res = read(con->fd, tmp, sizeof(tmp));
|
res = read(con->fd, tmp, sizeof(tmp));
|
||||||
if (res < 1)
|
if (res < 1) {
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
tmp[res] = 0;
|
tmp[res] = 0;
|
||||||
ast_cli_command(con->fd, tmp);
|
ast_cli_command(con->fd, tmp);
|
||||||
}
|
}
|
||||||
@@ -134,6 +137,7 @@ static void *listener(void *unused)
|
|||||||
int s;
|
int s;
|
||||||
int len;
|
int len;
|
||||||
int x;
|
int x;
|
||||||
|
int flags;
|
||||||
pthread_attr_t attr;
|
pthread_attr_t attr;
|
||||||
pthread_attr_init(&attr);
|
pthread_attr_init(&attr);
|
||||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
||||||
@@ -145,13 +149,15 @@ static void *listener(void *unused)
|
|||||||
} else {
|
} else {
|
||||||
for (x=0;x<AST_MAX_CONNECTS;x++) {
|
for (x=0;x<AST_MAX_CONNECTS;x++) {
|
||||||
if (consoles[x].fd < 0) {
|
if (consoles[x].fd < 0) {
|
||||||
if (pipe(consoles[x].p)) {
|
if (socketpair(AF_LOCAL, SOCK_STREAM, 0, consoles[x].p)) {
|
||||||
ast_log(LOG_ERROR, "Unable to create pipe: %s\n", strerror(errno));
|
ast_log(LOG_ERROR, "Unable to create pipe: %s\n", strerror(errno));
|
||||||
consoles[x].fd = -1;
|
consoles[x].fd = -1;
|
||||||
fdprint(s, "Server failed to create pipe\n");
|
fdprint(s, "Server failed to create pipe\n");
|
||||||
close(s);
|
close(s);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
flags = fcntl(consoles[x].p[1], F_GETFL);
|
||||||
|
fcntl(consoles[x].p[1], F_SETFL, flags | O_NONBLOCK);
|
||||||
consoles[x].fd = s;
|
consoles[x].fd = s;
|
||||||
if (pthread_create(&consoles[x].t, &attr, netconsole, &consoles[x])) {
|
if (pthread_create(&consoles[x].t, &attr, netconsole, &consoles[x])) {
|
||||||
ast_log(LOG_ERROR, "Unable to spawn thread to handle connection\n");
|
ast_log(LOG_ERROR, "Unable to spawn thread to handle connection\n");
|
||||||
@@ -626,10 +632,14 @@ int main(int argc, char *argv[])
|
|||||||
exit(1);
|
exit(1);
|
||||||
if (init_logger())
|
if (init_logger())
|
||||||
exit(1);
|
exit(1);
|
||||||
|
if (ast_image_init())
|
||||||
|
exit(1);
|
||||||
if (load_pbx())
|
if (load_pbx())
|
||||||
exit(1);
|
exit(1);
|
||||||
if (load_modules())
|
if (load_modules())
|
||||||
exit(1);
|
exit(1);
|
||||||
|
if (init_framer())
|
||||||
|
exit(1);
|
||||||
/* We might have the option of showing a console, but for now just
|
/* We might have the option of showing a console, but for now just
|
||||||
do nothing... */
|
do nothing... */
|
||||||
if (option_console && !option_verbose)
|
if (option_console && !option_verbose)
|
||||||
|
10
cli.c
10
cli.c
@@ -189,7 +189,7 @@ static int handle_version(int fd, int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
if (argc != 2)
|
if (argc != 2)
|
||||||
return RESULT_SHOWUSAGE;
|
return RESULT_SHOWUSAGE;
|
||||||
ast_cli(fd, VERSION_INFO);
|
ast_cli(fd, "%s\n", VERSION_INFO);
|
||||||
return RESULT_SUCCESS;
|
return RESULT_SUCCESS;
|
||||||
}
|
}
|
||||||
static int handle_chanlist(int fd, int argc, char *argv[])
|
static int handle_chanlist(int fd, int argc, char *argv[])
|
||||||
@@ -345,10 +345,10 @@ static struct ast_cli_entry builtins[] = {
|
|||||||
{ { "set", "verbose", NULL }, handle_set_verbose, "Set level of verboseness", set_verbose_help },
|
{ { "set", "verbose", NULL }, handle_set_verbose, "Set level of verboseness", set_verbose_help },
|
||||||
{ { "show", "channel", NULL }, handle_showchan, "Display information on a specific channel", showchan_help, complete_ch },
|
{ { "show", "channel", NULL }, handle_showchan, "Display information on a specific channel", showchan_help, complete_ch },
|
||||||
{ { "show", "channels", NULL }, handle_chanlist, "Display information on channels", chanlist_help },
|
{ { "show", "channels", NULL }, handle_chanlist, "Display information on channels", chanlist_help },
|
||||||
{ { "show", "modules", NULL }, handle_modlist, "List modules and info", modlist_help },
|
{ { "show", "modules", NULL }, handle_modlist, "List modules and info", modlist_help },
|
||||||
|
{ { "show", "version", NULL }, handle_version, "Display version info", version_help },
|
||||||
{ { "soft", "hangup", NULL }, handle_softhangup, "Request a hangup on a given channel", softhangup_help, complete_ch },
|
{ { "soft", "hangup", NULL }, handle_softhangup, "Request a hangup on a given channel", softhangup_help, complete_ch },
|
||||||
{ { "unload", NULL }, handle_unload, "Unload a dynamic module by name", unload_help, complete_fn },
|
{ { "unload", NULL }, handle_unload, "Unload a dynamic module by name", unload_help, complete_fn },
|
||||||
{ { "version", NULL }, handle_version, "Display version info", version_help },
|
|
||||||
{ { NULL }, NULL, NULL, NULL }
|
{ { NULL }, NULL, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -464,8 +464,8 @@ int ast_cli_register(struct ast_cli_entry *e)
|
|||||||
ast_pthread_mutex_lock(&clilock);
|
ast_pthread_mutex_lock(&clilock);
|
||||||
join2(fulle, sizeof(fulle), e->cmda);
|
join2(fulle, sizeof(fulle), e->cmda);
|
||||||
if (find_cli(e->cmda, -1)) {
|
if (find_cli(e->cmda, -1)) {
|
||||||
ast_log(LOG_WARNING, "Command '%s' already registered (or something close enough)\n", fulle);
|
|
||||||
ast_pthread_mutex_unlock(&clilock);
|
ast_pthread_mutex_unlock(&clilock);
|
||||||
|
ast_log(LOG_WARNING, "Command '%s' already registered (or something close enough)\n", fulle);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
cur = helpers;
|
cur = helpers;
|
||||||
@@ -655,7 +655,7 @@ static char *__ast_cli_generator(char *text, char *word, int state, int lock)
|
|||||||
join(fullcmd2, sizeof(fullcmd2), e2->cmda);
|
join(fullcmd2, sizeof(fullcmd2), e2->cmda);
|
||||||
if (e1->cmda[0])
|
if (e1->cmda[0])
|
||||||
join(fullcmd1, sizeof(fullcmd1), e1->cmda);
|
join(fullcmd1, sizeof(fullcmd1), e1->cmda);
|
||||||
if (!e1->cmda ||
|
if (!e1->cmda[0] ||
|
||||||
(e2 && (strcmp(fullcmd2, fullcmd1) < 0))) {
|
(e2 && (strcmp(fullcmd2, fullcmd1) < 0))) {
|
||||||
/* Use e2 */
|
/* Use e2 */
|
||||||
e = e2;
|
e = e2;
|
||||||
|
Reference in New Issue
Block a user