struct sip_peer tmp_peer;
const char *srvlookup = NULL;
static int deprecation_warning = 1;
+ int alt_fullcontact = alt ? 1 : 0;
struct ast_str *fullcontact = ast_str_alloca(512);
if (!realtime || ast_test_flag(&global_flags[1], SIP_PAGE2_RTCACHEFRIENDS)) {
} 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;
+ ast_str_reset(fullcontact);
+ }
/* Reconstruct field, because realtime separates our value at the ';' */
if (fullcontact->used > 0) {
ast_str_append(&fullcontact, 0, ";%s", v->value);