[asterisk-commits] tilghman: branch 1.4 r192932 - /branches/1.4/channels/chan_sip.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu May 7 11:29:13 CDT 2009
Author: tilghman
Date: Thu May 7 11:29:08 2009
New Revision: 192932
URL: http://svn.asterisk.org/svn-view/asterisk?view=rev&rev=192932
Log:
Eliminate repetition of fullcontact during reconstruction.
If the fullcontact field appears in both the sippeers and the
sipregs table, then during reconstruction of the field, it will
otherwise be doubled.
(closes issue #14754)
Reported by: Alexei Gradinari
Patches:
20090506__bug14754.diff.txt uploaded by tilghman (license 14)
Tested by: lmadsen
Modified:
branches/1.4/channels/chan_sip.c
Modified: branches/1.4/channels/chan_sip.c
URL: http://svn.asterisk.org/svn-view/asterisk/branches/1.4/channels/chan_sip.c?view=diff&rev=192932&r1=192931&r2=192932
==============================================================================
--- branches/1.4/channels/chan_sip.c (original)
+++ branches/1.4/channels/chan_sip.c Thu May 7 11:29:08 2009
@@ -17421,6 +17421,7 @@
struct ast_variable *tmpvar = NULL;
struct ast_flags peerflags[2] = {{(0)}};
struct ast_flags mask[2] = {{(0)}};
+ int alt_fullcontact = alt ? 1 : 0;
char fullcontact[sizeof(peer->fullcontact)] = "";
if (!realtime || ast_test_flag(&global_flags[1], SIP_PAGE2_RTCACHEFRIENDS))
@@ -17479,6 +17480,15 @@
} else if (realtime && !strcasecmp(v->name, "name"))
ast_copy_string(peer->name, v->value, sizeof(peer->name));
else if (realtime && !strcasecmp(v->name, "fullcontact")) {
+ if (alt_fullcontact && !alt) {
+ /* Reset, because the alternate also has a fullcontact and we
+ * do NOT want the field value to be doubled. It might be
+ * tempting to skip this, but the first table might not have
+ * fullcontact and since we're here, we know that the alternate
+ * absolutely does. */
+ alt_fullcontact = 0;
+ fullcontact[0] = '\0';
+ }
/* Reconstruct field, because realtime separates our value at the ';' */
if (!ast_strlen_zero(fullcontact)) {
strncat(fullcontact, ";", sizeof(fullcontact) - strlen(fullcontact) - 1);
More information about the asterisk-commits
mailing list