dect
/
asterisk
Archived
13
0
Fork 0

Properly handle events during reads

git-svn-id: http://svn.digium.com/svn/asterisk/trunk@1630 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
markster 2003-10-14 09:56:46 +00:00
parent 5c4b223d3e
commit a8b23b8dec
1 changed files with 4 additions and 1 deletions

View File

@ -3322,16 +3322,19 @@ struct ast_frame *zt_read(struct ast_channel *ast)
ast->blocking = 0;
/* Check for hangup */
if (res < 0) {
f = NULL;
if (res == -1) {
if (errno == EAGAIN) {
/* Return "NULL" frame if there is nobody there */
ast_mutex_unlock(&p->lock);
return &p->subs[index].f;
} else if (errno == ELAST) {
f = zt_handle_event(ast);
} else
ast_log(LOG_WARNING, "zt_rec: %s\n", strerror(errno));
}
ast_mutex_unlock(&p->lock);
return NULL;
return f;
}
if (res != (p->subs[index].linear ? READ_SIZE * 2 : READ_SIZE)) {
ast_log(LOG_DEBUG, "Short read (%d/%d), must be an event...\n", res, p->subs[index].linear ? READ_SIZE * 2 : READ_SIZE);