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
This commit is contained in:
parent
f72202f1ad
commit
e3688a45a7
13
manager.c
13
manager.c
|
@ -1223,11 +1223,8 @@ static int process_message(struct mansession *s, struct message *m)
|
||||||
char *authtype;
|
char *authtype;
|
||||||
authtype = astman_get_header(m, "AuthType");
|
authtype = astman_get_header(m, "AuthType");
|
||||||
if (!strcasecmp(authtype, "MD5")) {
|
if (!strcasecmp(authtype, "MD5")) {
|
||||||
if (!s->challenge || ast_strlen_zero(s->challenge)) {
|
if (!s->challenge || ast_strlen_zero(s->challenge))
|
||||||
ast_mutex_lock(&s->__lock);
|
|
||||||
snprintf(s->challenge, sizeof(s->challenge), "%d", rand());
|
snprintf(s->challenge, sizeof(s->challenge), "%d", rand());
|
||||||
ast_mutex_unlock(&s->__lock);
|
|
||||||
}
|
|
||||||
ast_mutex_lock(&s->__lock);
|
ast_mutex_lock(&s->__lock);
|
||||||
ast_cli(s->fd, "Response: Success\r\n"
|
ast_cli(s->fd, "Response: Success\r\n"
|
||||||
"%s"
|
"%s"
|
||||||
|
@ -1277,6 +1274,10 @@ static int process_message(struct mansession *s, struct message *m)
|
||||||
}
|
}
|
||||||
tmp = tmp->next;
|
tmp = tmp->next;
|
||||||
}
|
}
|
||||||
|
if (!ret)
|
||||||
|
astman_send_error(s, m, "Invalid/unknown command");
|
||||||
|
else
|
||||||
|
ret = 0;
|
||||||
ast_mutex_lock(&s->__lock);
|
ast_mutex_lock(&s->__lock);
|
||||||
s->busy = 0;
|
s->busy = 0;
|
||||||
while(s->eventq) {
|
while(s->eventq) {
|
||||||
|
@ -1289,10 +1290,6 @@ static int process_message(struct mansession *s, struct message *m)
|
||||||
free(eqe);
|
free(eqe);
|
||||||
}
|
}
|
||||||
ast_mutex_unlock(&s->__lock);
|
ast_mutex_unlock(&s->__lock);
|
||||||
if (!ret)
|
|
||||||
astman_send_error(s, m, "Invalid/unknown command");
|
|
||||||
else
|
|
||||||
ret = 0;
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Reference in New Issue