|
|
@ -3180,7 +3180,9 @@ static struct ast_frame *zt_handle_event(struct ast_channel *ast)
|
|
|
|
return &p->subs[index].f;
|
|
|
|
return &p->subs[index].f;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
struct ast_frame *zt_exception(struct ast_channel *ast)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static struct ast_frame *__zt_exception(struct ast_channel *ast)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
struct zt_pvt *p = ast->pvt->pvt;
|
|
|
|
struct zt_pvt *p = ast->pvt->pvt;
|
|
|
|
int res;
|
|
|
|
int res;
|
|
|
@ -3286,6 +3288,16 @@ struct ast_frame *zt_exception(struct ast_channel *ast)
|
|
|
|
return f;
|
|
|
|
return f;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct ast_frame *zt_exception(struct ast_channel *ast)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
struct zt_pvt *p = ast->pvt->pvt;
|
|
|
|
|
|
|
|
struct ast_frame *f;
|
|
|
|
|
|
|
|
ast_mutex_lock(&p->lock);
|
|
|
|
|
|
|
|
f = __zt_exception(ast);
|
|
|
|
|
|
|
|
ast_mutex_unlock(&p->lock);
|
|
|
|
|
|
|
|
return f;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
struct ast_frame *zt_read(struct ast_channel *ast)
|
|
|
|
struct ast_frame *zt_read(struct ast_channel *ast)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
struct zt_pvt *p = ast->pvt->pvt;
|
|
|
|
struct zt_pvt *p = ast->pvt->pvt;
|
|
|
@ -3401,7 +3413,7 @@ struct ast_frame *zt_read(struct ast_channel *ast)
|
|
|
|
ast_mutex_unlock(&p->lock);
|
|
|
|
ast_mutex_unlock(&p->lock);
|
|
|
|
return &p->subs[index].f;
|
|
|
|
return &p->subs[index].f;
|
|
|
|
} else if (errno == ELAST) {
|
|
|
|
} else if (errno == ELAST) {
|
|
|
|
f = zt_handle_event(ast);
|
|
|
|
f = __zt_exception(ast);
|
|
|
|
} else
|
|
|
|
} else
|
|
|
|
ast_log(LOG_WARNING, "zt_rec: %s\n", strerror(errno));
|
|
|
|
ast_log(LOG_WARNING, "zt_rec: %s\n", strerror(errno));
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -3410,7 +3422,7 @@ struct ast_frame *zt_read(struct ast_channel *ast)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (res != (p->subs[index].linear ? READ_SIZE * 2 : READ_SIZE)) {
|
|
|
|
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);
|
|
|
|
ast_log(LOG_DEBUG, "Short read (%d/%d), must be an event...\n", res, p->subs[index].linear ? READ_SIZE * 2 : READ_SIZE);
|
|
|
|
f = zt_handle_event(ast);
|
|
|
|
f = __zt_exception(ast);
|
|
|
|
ast_mutex_unlock(&p->lock);
|
|
|
|
ast_mutex_unlock(&p->lock);
|
|
|
|
return f;
|
|
|
|
return f;
|
|
|
|
}
|
|
|
|
}
|
|
|
|