SIP channel name uniqueness
SIP channel names were supposed to be unique by way of a name suffix derived from the pointer to the channel's private data. Uniqueness was preserved on 32-bit systems, but not on 64-bit systems. This patch, as suggested by kpfleming, replaces this suffix with a simple incremented unsigned int. (closes issue #15152) Reported by: palbrecht Review: https://reviewboard.asterisk.org/r/420/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@226974 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
parent
d279260f51
commit
2c4d3b3168
1 changed files with 3 additions and 2 deletions
|
@ -929,6 +929,8 @@ static const struct cfsip_methods {
|
||||||
{ SIP_PING, NO_RTP, "PING", CAN_CREATE_DIALOG_UNSUPPORTED_METHOD }
|
{ SIP_PING, NO_RTP, "PING", CAN_CREATE_DIALOG_UNSUPPORTED_METHOD }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static unsigned int chan_idx;
|
||||||
|
|
||||||
/*! Define SIP option tags, used in Require: and Supported: headers
|
/*! Define SIP option tags, used in Require: and Supported: headers
|
||||||
We need to be aware of these properties in the phones to use
|
We need to be aware of these properties in the phones to use
|
||||||
the replace: header. We should not do that without knowing
|
the replace: header. We should not do that without knowing
|
||||||
|
@ -6938,8 +6940,7 @@ static struct ast_channel *sip_new(struct sip_pvt *i, int state, const char *tit
|
||||||
|
|
||||||
sip_pvt_unlock(i);
|
sip_pvt_unlock(i);
|
||||||
/* Don't hold a sip pvt lock while we allocate a channel */
|
/* Don't hold a sip pvt lock while we allocate a channel */
|
||||||
tmp = ast_channel_alloc(1, state, i->cid_num, i->cid_name, i->accountcode, i->exten, i->context, linkedid, i->amaflags, "SIP/%s-%08x", my_name, (int)(long) i);
|
tmp = ast_channel_alloc(1, state, i->cid_num, i->cid_name, i->accountcode, i->exten, i->context, linkedid, i->amaflags, "SIP/%s-%08x", my_name, ast_atomic_fetchadd_int((int *)&chan_idx, +1));
|
||||||
|
|
||||||
}
|
}
|
||||||
if (!tmp) {
|
if (!tmp) {
|
||||||
ast_log(LOG_WARNING, "Unable to allocate AST channel structure for SIP channel\n");
|
ast_log(LOG_WARNING, "Unable to allocate AST channel structure for SIP channel\n");
|
||||||
|
|
Loading…
Reference in a new issue