Fix some locking and return value funkiness. We really shouldn't be unlocking this lock inside of a function, unless we locked it there too.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@97618 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Jason Parker
2008-01-09 20:05:45 +00:00
parent 2da89b6120
commit 5583996b22

View File

@@ -1755,10 +1755,11 @@ static int help1(int fd, char *match[], int locked)
ast_cli(fd, "%25.25s %s\n", e->_full_cmd, S_OR(e->summary, ""));
found++;
}
if (!locked)
AST_LIST_UNLOCK(&helpers);
if (!locked && !found && matchstr[0])
ast_cli(fd, "No such command '%s'.\n", matchstr);
return 0;
return RESULT_SUCCESS;
}
static int help_workhorse(int fd, char *match[])
@@ -1770,6 +1771,7 @@ static int handle_help(int fd, int argc, char *argv[])
{
char fullcmd[80];
struct ast_cli_entry *e;
int res = RESULT_SUCCESS;
if (argc < 1)
return RESULT_SHOWUSAGE;
@@ -1778,8 +1780,11 @@ static int handle_help(int fd, int argc, char *argv[])
AST_LIST_LOCK(&helpers);
e = find_cli(argv + 1, 1); /* try exact match first */
if (!e)
return help1(fd, argv + 1, 1 /* locked */);
if (!e) {
res = help1(fd, argv + 1, 1 /* locked */);
AST_LIST_UNLOCK(&helpers);
return res;
}
if (e->usage)
ast_cli(fd, "%s", e->usage);
else {
@@ -1787,7 +1792,7 @@ static int handle_help(int fd, int argc, char *argv[])
ast_cli(fd, "No help text available for '%s'.\n", fullcmd);
}
AST_LIST_UNLOCK(&helpers);
return RESULT_SUCCESS;
return res;
}
static char *parse_args(const char *s, int *argc, char *argv[], int max, int *trailingwhitespace)