Index: main/manager.c =================================================================== --- main/manager.c (revision 82756) +++ main/manager.c (working copy) @@ -147,6 +147,7 @@ int needdestroy; /*!< Whether an HTTP session should be destroyed */ pthread_t waiting_thread; /*!< Sleeping thread using this descriptor */ unsigned long managerid; /*!< Unique manager identifier, 0 for AMI sessions */ + time_t sessionstart; /*!< Session start time */ time_t sessiontimeout; /*!< Session timeout if HTTP */ char username[80]; /*!< Logged in username */ char challenge[10]; /*!< Authentication challenge */ @@ -624,14 +625,17 @@ static int handle_showmanconn(int fd, int argc, char *argv[]) { struct mansession *s; - char *format = " %-15.15s %-15.15s\n"; + time_t now = time(NULL); + + char *format = " %-15.15s %-15.15s %-10.10s %-10.10s %-8.8s %-8.8s %-5.5s %-5.5s\n"; + char *format2 = " %-15.15s %-15.15s %-10d %-10d %-8d %-8d %-5.5d %-5.5d\n"; int count = 0; - ast_cli(fd, format, "Username", "IP Address"); + ast_cli(fd, format, "Username", "IP Address", "Start", "Elapsed", "FileDes", "HttpCnt", "Read", "Write"); AST_LIST_LOCK(&sessions); AST_LIST_TRAVERSE(&sessions, s, list) { - ast_cli(fd, format,s->username, ast_inet_ntoa(s->sin.sin_addr)); + ast_cli(fd, format2,s->username, ast_inet_ntoa(s->sin.sin_addr), (int)(s->sessionstart), (int)(now - s->sessionstart), s->fd, s->inuse, s->readperm, s->writeperm); count++; } AST_LIST_UNLOCK(&sessions); @@ -1093,6 +1097,7 @@ ast_copy_string(s->username, user, sizeof(s->username)); s->readperm = readperm; s->writeperm = writeperm; + s->sessionstart = time(NULL); set_eventmask(s, astman_get_header(m, "Events")); return 0; }