aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordbrooks <dbrooks@f38db490-d61c-443f-a65b-d21fe96a405b>2009-11-02 20:52:53 +0000
committerdbrooks <dbrooks@f38db490-d61c-443f-a65b-d21fe96a405b>2009-11-02 20:52:53 +0000
commitd2af5ebe3a4041474768cf620cb9f7bdfe0747fe (patch)
treee7f6e63e4e3862515483bf763821be9773231f55
parent0744302114945c2054a48b535ed2aa068ee6163a (diff)
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: http://svn.digium.com/svn/asterisk/branches/1.4@226972 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--channels/chan_sip.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index f5a45b2a5..7a53c106f 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -398,6 +398,8 @@ static const struct cfsip_methods {
{ 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
We need to be aware of these properties in the phones to use
the replace: header. We should not do that without knowing
@@ -4207,7 +4209,7 @@ static struct ast_channel *sip_new(struct sip_pvt *i, int state, const char *tit
ast_mutex_unlock(&i->lock);
/* 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, 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, i->amaflags, "SIP/%s-%08x", my_name, ast_atomic_fetchadd_int((int *)&chan_idx, +1));
}
if (!tmp) {