From: Mark Spencer Date: Tue, 3 Aug 2004 17:48:18 +0000 (+0000) Subject: Merge nicolasg's manager/cli patch (bug #2207) X-Git-Tag: 1.0.0-rc2~29 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f074b928238ff30fcba513c6353ce30568119240;p=thirdparty%2Fasterisk.git Merge nicolasg's manager/cli patch (bug #2207) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3575 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/cli.c b/cli.c index dcc88072ae..8b132d22af 100755 --- a/cli.c +++ b/cli.c @@ -523,11 +523,17 @@ static int handle_nodebugchan(int fd, int argc, char *argv[]) static int handle_showchan(int fd, int argc, char *argv[]) { struct ast_channel *c=NULL; + struct timeval now; + long elapsed_seconds=0; if (argc != 3) return RESULT_SHOWUSAGE; + gettimeofday(&now, NULL); c = ast_channel_walk_locked(NULL); while(c) { if (!strcasecmp(c->name, argv[2])) { + if(c->cdr) { + elapsed_seconds = now.tv_sec - c->cdr->start.tv_sec; + } ast_cli(fd, " -- General --\n" " Name: %s\n" @@ -544,6 +550,7 @@ static int handle_showchan(int fd, int argc, char *argv[]) " Frames in: %d%s\n" " Frames out: %d%s\n" " Time to Hangup: %ld\n" + "Elapsed Seconds: %ld\n" " -- PBX --\n" " Context: %s\n" " Extension: %s\n" @@ -559,6 +566,7 @@ static int handle_showchan(int fd, int argc, char *argv[]) (c->dnid ? c->dnid : "(N/A)" ), ast_state2str(c->_state), c->_state, c->rings, c->nativeformats, c->writeformat, c->readformat, c->fds[0], c->fin & 0x7fffffff, (c->fin & 0x80000000) ? " (DEBUGGED)" : "", c->fout & 0x7fffffff, (c->fout & 0x80000000) ? " (DEBUGGED)" : "", (long)c->whentohangup, + (long)elapsed_seconds, c->context, c->exten, c->priority, c->callgroup, c->pickupgroup, ( c->appl ? c->appl : "(N/A)" ), ( c-> data ? (!ast_strlen_zero(c->data) ? c->data : "(Empty)") : "(None)"), c->stack, (c->blocking ? c->blockproc : "(Not Blocking)")); diff --git a/manager.c b/manager.c index c3265f2bcf..0db032a98a 100755 --- a/manager.c +++ b/manager.c @@ -649,6 +649,10 @@ static int action_status(struct mansession *s, struct message *m) char idText[256] = ""; struct ast_channel *c; char bridge[256]; + struct timeval now; + long elapsed_seconds=0; + + gettimeofday(&now, NULL); astman_send_ack(s, m, "Channel status will follow"); c = ast_channel_walk_locked(NULL); if (id && !ast_strlen_zero(id)) @@ -672,6 +676,9 @@ static int action_status(struct mansession *s, struct message *m) else bridge[0] = '\0'; if (c->pbx) { + if (c->cdr) { + elapsed_seconds = now.tv_sec - c->cdr->start.tv_sec; + } ast_cli(s->fd, "Event: Status\r\n" "Channel: %s\r\n" @@ -681,6 +688,7 @@ static int action_status(struct mansession *s, struct message *m) "Context: %s\r\n" "Extension: %s\r\n" "Priority: %d\r\n" + "Seconds: %ld\r\n" "%s" "Uniqueid: %s\r\n" "%s" @@ -688,7 +696,7 @@ static int action_status(struct mansession *s, struct message *m) c->name, c->callerid ? c->callerid : "", c->accountcode, ast_state2str(c->_state), c->context, - c->exten, c->priority, bridge, c->uniqueid, idText); + c->exten, c->priority, (long)elapsed_seconds, bridge, c->uniqueid, idText); } else { ast_cli(s->fd, "Event: Status\r\n"