[asterisk-commits] mmichelson: branch group/issue8824 r146681 - /team/group/issue8824/channels/
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Oct 6 11:34:57 CDT 2008
Author: mmichelson
Date: Mon Oct 6 11:34:56 2008
New Revision: 146681
URL: http://svn.digium.com/view/asterisk?view=rev&rev=146681
Log:
Improve behavior of P-Asserted-Identity:
* Don't add extra parameters besides the URI
* If privacy is on, do not send the header at all
Modified:
team/group/issue8824/channels/chan_sip.c
Modified: team/group/issue8824/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/group/issue8824/channels/chan_sip.c?view=diff&rev=146681&r1=146680&r2=146681
==============================================================================
--- team/group/issue8824/channels/chan_sip.c (original)
+++ team/group/issue8824/channels/chan_sip.c Mon Oct 6 11:34:56 2008
@@ -8126,6 +8126,7 @@
const char *fromdomain;
const char *privacy = NULL;
const char *screen = NULL;
+ int private = 0;
if (p->owner && p->owner->connected.id.number)
lid_num = p->owner->connected.id.number;
@@ -8139,7 +8140,10 @@
lid_name = lid_num;
fromdomain = S_OR(p->fromdomain, ast_inet_ntoa(p->ourip.sin_addr));
- snprintf(tmp, sizeof(tmp), "\"%s\" <sip:%s@%s>;party=%s", lid_name, lid_num, fromdomain, ast_test_flag(&p->flags[0], SIP_OUTGOING) ? "calling" : "called");
+ snprintf(tmp, sizeof(tmp), "\"%s\" <sip:%s@%s>", lid_name, lid_num, fromdomain);
+ if (ast_test_flag(&p->flags[1], SIP_SENDRPID_RPID)) {
+ snprintf(tmp + strlen(tmp), sizeof(tmp) - strlen(tmp), ";party=%s", ast_test_flag(&p->flags[0], SIP_OUTGOING) ? "calling" : "called");
+ }
switch (lid_pres) {
case AST_PRES_ALLOWED_USER_NUMBER_NOT_SCREENED:
@@ -8156,29 +8160,33 @@
case AST_PRES_PROHIB_USER_NUMBER_FAILED_SCREEN:
privacy = "full";
screen = "no";
+ private = 1;
break;
case AST_PRES_PROHIB_USER_NUMBER_PASSED_SCREEN:
case AST_PRES_PROHIB_NETWORK_NUMBER:
privacy = "full";
screen = "yes";
+ private = 1;
break;
case AST_PRES_NUMBER_NOT_AVAILABLE:
break;
default:
- if ((lid_pres & AST_PRES_RESTRICTION) != AST_PRES_ALLOWED)
+ if ((lid_pres & AST_PRES_RESTRICTION) != AST_PRES_ALLOWED) {
privacy = "full";
+ private = 1;
+ }
else
privacy = "off";
screen = "no";
break;
}
- if (!ast_strlen_zero(privacy) && !ast_strlen_zero(screen))
+ if (ast_test_flag(&p->flags[1], SIP_SENDRPID_RPID) && !ast_strlen_zero(privacy) && !ast_strlen_zero(screen))
snprintf(tmp + strlen(tmp), sizeof(tmp) - strlen(tmp), ";privacy=%s;screen=%s", privacy, screen);
if (ast_test_flag(&p->flags[0], SIP_SENDRPID_RPID)) {
add_header(req, "Remote-Party-ID", tmp);
- } else {
+ } else if (!private) {
add_header(req, "P-Asserted-Identity", tmp);
}
return 0;
More information about the asterisk-commits
mailing list