From 9468e5cd063550e1b6a541d8341559f3a33e83d5 Mon Sep 17 00:00:00 2001
From: Olle Johansson <oej@edvina.net>
Date: Wed, 12 Apr 2006 21:00:31 +0000
Subject: [PATCH] Fix for Polycom bug...

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@19549 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_sip.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 480d952bef..7e9300dc70 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -350,6 +350,8 @@ static const struct cfsip_options {
 } sip_options[] = {	/* XXX used in 3 places */
 	/* Replaces: header for transfer */
 	{ SIP_OPT_REPLACES,	SUPPORTED,	"replaces" },	
+	/* One version of Polycom firmware has the wrong label */
+	{ SIP_OPT_REPLACES,	SUPPORTED,	"replace" },	
 	/* RFC3262: PRACK 100% reliability */
 	{ SIP_OPT_100REL,	NOT_SUPPORTED,	"100rel" },	
 	/* SIP Session Timers */
@@ -8167,9 +8169,13 @@ static int _sip_show_peer(int type, int fd, struct mansession *s, struct message
 		ast_cli(fd, "  Def. Username: %s\n", peer->username);
 		ast_cli(fd, "  SIP Options  : ");
 		if (peer->sipoptions) {
+			int lastoption = -1;
 			for (x=0 ; (x < (sizeof(sip_options) / sizeof(sip_options[0]))); x++) {
-				if (peer->sipoptions & sip_options[x].id)
-					ast_cli(fd, "%s ", sip_options[x].text);
+				if (sip_options[x].id != lastoption) {
+					if (peer->sipoptions & sip_options[x].id)
+						ast_cli(fd, "%s ", sip_options[x].text);
+					lastoption = x;
+				}
 			}
 		} else
 			ast_cli(fd, "(none)");
-- 
GitLab