diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2001-10-11 18:51:39 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2001-10-11 18:51:39 +0000 |
commit | 9a761fb93e16fa7d20cf5812299c4cf7b6d44e4b (patch) | |
tree | d5edbec872ca788c4c559357b82418b731c64759 | |
parent | c81fcd9fbdf431f4c41fb17866f882f1e1d13a9c (diff) |
Version 0.1.9 from FTP
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@367 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-x | asterisk.c | 14 | ||||
-rwxr-xr-x | cli.c | 10 |
2 files changed, 17 insertions, 7 deletions
diff --git a/asterisk.c b/asterisk.c index a73307be0..83a2e4635 100755 --- a/asterisk.c +++ b/asterisk.c @@ -20,6 +20,8 @@ #include <asterisk/ulaw.h> #include <asterisk/callerid.h> #include <asterisk/module.h> +#include <asterisk/image.h> +#include <fcntl.h> #include <stdio.h> #include <signal.h> #include <sched.h> @@ -102,8 +104,9 @@ static void *netconsole(void *vconsole) } if (FD_ISSET(con->fd, &rfds)) { res = read(con->fd, tmp, sizeof(tmp)); - if (res < 1) + if (res < 1) { break; + } tmp[res] = 0; ast_cli_command(con->fd, tmp); } @@ -134,6 +137,7 @@ static void *listener(void *unused) int s; int len; int x; + int flags; pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); @@ -145,13 +149,15 @@ static void *listener(void *unused) } else { for (x=0;x<AST_MAX_CONNECTS;x++) { 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)); consoles[x].fd = -1; fdprint(s, "Server failed to create pipe\n"); close(s); break; } + flags = fcntl(consoles[x].p[1], F_GETFL); + fcntl(consoles[x].p[1], F_SETFL, flags | O_NONBLOCK); consoles[x].fd = s; if (pthread_create(&consoles[x].t, &attr, netconsole, &consoles[x])) { ast_log(LOG_ERROR, "Unable to spawn thread to handle connection\n"); @@ -626,10 +632,14 @@ int main(int argc, char *argv[]) exit(1); if (init_logger()) exit(1); + if (ast_image_init()) + exit(1); if (load_pbx()) exit(1); if (load_modules()) exit(1); + if (init_framer()) + exit(1); /* We might have the option of showing a console, but for now just do nothing... */ if (option_console && !option_verbose) @@ -189,7 +189,7 @@ static int handle_version(int fd, int argc, char *argv[]) { if (argc != 2) return RESULT_SHOWUSAGE; - ast_cli(fd, VERSION_INFO); + ast_cli(fd, "%s\n", VERSION_INFO); return RESULT_SUCCESS; } 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 }, { { "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", "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 }, { { "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 } }; @@ -464,8 +464,8 @@ int ast_cli_register(struct ast_cli_entry *e) ast_pthread_mutex_lock(&clilock); join2(fulle, sizeof(fulle), e->cmda); 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_log(LOG_WARNING, "Command '%s' already registered (or something close enough)\n", fulle); return -1; } 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); if (e1->cmda[0]) join(fullcmd1, sizeof(fullcmd1), e1->cmda); - if (!e1->cmda || + if (!e1->cmda[0] || (e2 && (strcmp(fullcmd2, fullcmd1) < 0))) { /* Use e2 */ e = e2; |