Exit from session loop upon error (ie: they disconnected) and don't do any buffer manipulation in do_message. get_input will handle it.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@50629 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
parent
9b1dfc49c6
commit
451d1a2d55
|
@ -2139,10 +2139,6 @@ static int do_message(struct mansession *s)
|
||||||
if (res == 0) {
|
if (res == 0) {
|
||||||
continue;
|
continue;
|
||||||
} else if (res > 0) {
|
} else if (res > 0) {
|
||||||
/* Strip trailing \r\n */
|
|
||||||
if (strlen(header_buf) < 2)
|
|
||||||
continue;
|
|
||||||
header_buf[strlen(header_buf) - 2] = '\0';
|
|
||||||
if (ast_strlen_zero(header_buf))
|
if (ast_strlen_zero(header_buf))
|
||||||
return process_message(s, &m) ? -1 : 0;
|
return process_message(s, &m) ? -1 : 0;
|
||||||
else if (m.hdrcount < (AST_MAX_MANHEADERS - 1))
|
else if (m.hdrcount < (AST_MAX_MANHEADERS - 1))
|
||||||
|
@ -2200,8 +2196,7 @@ static void *session_do(void *data)
|
||||||
ast_mutex_unlock(&s->__lock);
|
ast_mutex_unlock(&s->__lock);
|
||||||
for (;;) {
|
for (;;) {
|
||||||
res = do_message(s);
|
res = do_message(s);
|
||||||
|
if ((res < 0) || (process_events(s)))
|
||||||
if (process_events(s))
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* session is over, explain why and terminate */
|
/* session is over, explain why and terminate */
|
||||||
|
|
Reference in New Issue