|
|
|
|
@ -84,6 +84,8 @@ static const int BUCKET_SIZE = 1;
|
|
|
|
|
|
|
|
|
|
static struct ao2_container *locals;
|
|
|
|
|
|
|
|
|
|
static unsigned int name_sequence = 0;
|
|
|
|
|
|
|
|
|
|
static struct ast_jb_conf g_jb_conf = {
|
|
|
|
|
.flags = 0,
|
|
|
|
|
.max_size = -1,
|
|
|
|
|
@ -1156,8 +1158,8 @@ static struct local_pvt *local_alloc(const char *data, struct ast_format_cap *ca
|
|
|
|
|
static struct ast_channel *local_new(struct local_pvt *p, int state, const char *linkedid)
|
|
|
|
|
{
|
|
|
|
|
struct ast_channel *tmp = NULL, *tmp2 = NULL;
|
|
|
|
|
int randnum = ast_random() & 0xffff;
|
|
|
|
|
struct ast_format fmt;
|
|
|
|
|
int generated_seqno = ast_atomic_fetchadd_int((int *)&name_sequence, +1);
|
|
|
|
|
const char *t;
|
|
|
|
|
int ama;
|
|
|
|
|
|
|
|
|
|
@ -1175,8 +1177,8 @@ static struct ast_channel *local_new(struct local_pvt *p, int state, const char
|
|
|
|
|
|
|
|
|
|
/* Make sure that the ;2 channel gets the same linkedid as ;1. You can't pass linkedid to both
|
|
|
|
|
* allocations since if linkedid isn't set, then each channel will generate its own linkedid. */
|
|
|
|
|
if (!(tmp = ast_channel_alloc(1, state, 0, 0, t, p->exten, p->context, linkedid, ama, "Local/%s@%s-%04x;1", p->exten, p->context, randnum))
|
|
|
|
|
|| !(tmp2 = ast_channel_alloc(1, AST_STATE_RING, 0, 0, t, p->exten, p->context, tmp->linkedid, ama, "Local/%s@%s-%04x;2", p->exten, p->context, randnum))) {
|
|
|
|
|
if (!(tmp = ast_channel_alloc(1, state, 0, 0, t, p->exten, p->context, linkedid, ama, "Local/%s@%s-%08x;1", p->exten, p->context, generated_seqno))
|
|
|
|
|
|| !(tmp2 = ast_channel_alloc(1, AST_STATE_RING, 0, 0, t, p->exten, p->context, tmp->linkedid, ama, "Local/%s@%s-%08x;2", p->exten, p->context, generated_seqno))) {
|
|
|
|
|
if (tmp) {
|
|
|
|
|
tmp = ast_channel_release(tmp);
|
|
|
|
|
}
|
|
|
|
|
|