diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index b0b4e9eb28a0b71fdec715c74fe743d360501b0f..c1d5adefaa32ade441534a356d9169d5b7356f74 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -929,6 +929,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
@@ -6938,8 +6940,7 @@ static struct ast_channel *sip_new(struct sip_pvt *i, int state, const char *tit
 
 		sip_pvt_unlock(i);
 		/* 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) {
 		ast_log(LOG_WARNING, "Unable to allocate AST channel structure for SIP channel\n");