The CID lookup feature wasn't actually working properly with dialog-info+xml

supporting devices.  The devices (snoms, specifically) need to receive a SIP
URI instead of just an extension.  This adds that functionality.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@172778 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Sean Bright 2009-02-02 01:41:29 +00:00
parent 317e4e7313
commit 2af8f59958
1 changed files with 5 additions and 2 deletions

View File

@ -10207,7 +10207,8 @@ static int transmit_state_notify(struct sip_pvt *p, int state, int full, int tim
ast_str_append(&tmp, 0, "<?xml version=\"1.0\"?>\n"); ast_str_append(&tmp, 0, "<?xml version=\"1.0\"?>\n");
ast_str_append(&tmp, 0, "<dialog-info xmlns=\"urn:ietf:params:xml:ns:dialog-info\" version=\"%d\" state=\"%s\" entity=\"%s\">\n", p->dialogver++, full ? "full" : "partial", mto); ast_str_append(&tmp, 0, "<dialog-info xmlns=\"urn:ietf:params:xml:ns:dialog-info\" version=\"%d\" state=\"%s\" entity=\"%s\">\n", p->dialogver++, full ? "full" : "partial", mto);
if ((state & AST_EXTENSION_RINGING) && sip_cfg.notifyringing) { if ((state & AST_EXTENSION_RINGING) && sip_cfg.notifyringing) {
const char *local_display = p->exten, *local_target = mto; const char *local_display = p->exten;
char *local_target = mto;
/* There are some limitations to how this works. The primary one is that the /* There are some limitations to how this works. The primary one is that the
callee must be dialing the same extension that is being monitored. Simply dialing callee must be dialing the same extension that is being monitored. Simply dialing
@ -10216,8 +10217,10 @@ static int transmit_state_notify(struct sip_pvt *p, int state, int full, int tim
struct ast_channel *caller = ast_channel_search_locked(find_calling_channel, p); struct ast_channel *caller = ast_channel_search_locked(find_calling_channel, p);
if (caller) { if (caller) {
int need = strlen(caller->cid.cid_num) + strlen(p->fromdomain) + sizeof("sip:@");
local_target = alloca(need);
snprintf(local_target, need, "sip:%s@%s", caller->cid.cid_num, p->fromdomain);
local_display = ast_strdupa(caller->cid.cid_name); local_display = ast_strdupa(caller->cid.cid_name);
local_target = ast_strdupa(caller->cid.cid_num);
ast_channel_unlock(caller); ast_channel_unlock(caller);
caller = NULL; caller = NULL;
} }