aboutsummaryrefslogtreecommitdiffstats
path: root/manager.c
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2005-09-30 23:44:12 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2005-09-30 23:44:12 +0000
commite3688a45a7de785908d86731b6d9048e4cd78205 (patch)
tree5b4e6f1a794f4c85cab6b320e4714dbf139d5c62 /manager.c
parentf72202f1adcd9fc115e326813341abc79ba36d34 (diff)
tell the user about invalid/unknown commands before sending queued events
s->challenge does not need to be protected by the lock, since only process_message() (and functions it calls) ever use it, and process_message() is a blocking operation by definition git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6703 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'manager.c')
-rwxr-xr-xmanager.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/manager.c b/manager.c
index 5350c710f..ea1a5fbaa 100755
--- a/manager.c
+++ b/manager.c
@@ -1223,11 +1223,8 @@ static int process_message(struct mansession *s, struct message *m)
char *authtype;
authtype = astman_get_header(m, "AuthType");
if (!strcasecmp(authtype, "MD5")) {
- if (!s->challenge || ast_strlen_zero(s->challenge)) {
- ast_mutex_lock(&s->__lock);
+ if (!s->challenge || ast_strlen_zero(s->challenge))
snprintf(s->challenge, sizeof(s->challenge), "%d", rand());
- ast_mutex_unlock(&s->__lock);
- }
ast_mutex_lock(&s->__lock);
ast_cli(s->fd, "Response: Success\r\n"
"%s"
@@ -1277,6 +1274,10 @@ static int process_message(struct mansession *s, struct message *m)
}
tmp = tmp->next;
}
+ if (!ret)
+ astman_send_error(s, m, "Invalid/unknown command");
+ else
+ ret = 0;
ast_mutex_lock(&s->__lock);
s->busy = 0;
while(s->eventq) {
@@ -1289,10 +1290,6 @@ static int process_message(struct mansession *s, struct message *m)
free(eqe);
}
ast_mutex_unlock(&s->__lock);
- if (!ret)
- astman_send_error(s, m, "Invalid/unknown command");
- else
- ret = 0;
return ret;
}
return 0;