Christian Hecimovic
2003-Dec-10 14:59 UTC
[Asterisk-Users] Native Bridging and Polycom 600 Solved
Hi, The Polycom 600 phones do not natively bridge with Asterisk. I've solved the problem, but I'm not sure how general it is, so I thought I'd ask this list for advice. It's necessary to use a recent Asterisk CVS for this, since there was a problem with session versions in earlier CVS builds. The problem now is the Via field. When the reinvite goes out, the branch number does not change from its value in the previous invite. However, the Polycom phone tracks its transactions this way - the branch numbers must be different for new invites. So here's the change: In chan_sip.c, in transmit_reinvite_with_sdp(): static int transmit_reinvite_with_sdp(struct sip_pvt *p, struct ast_rtp *rtp, struct ast_rtp *vrtp) { struct sip_request req; if (p->canreinvite == REINVITE_UPDATE) reqprep(&req, p, "UPDATE", 0); else { // BEGIN POLYCOM CHANGE p->branch++; snprintf(p->via, sizeof(p->via), "SIP/2.0/UDP %s:%d;branch=z9hG4bK%08x", inet_ntoa(p->ourip), ourport, p->branch); // END POLYCOM CHANGE reqprep(&req, p, "INVITE", 0); } ... the rest of the method follows. Does anyone with any detailed knowledge of other SIP phones know if this will cause something bad to happen? And, if any Asterisk developers are reading, could they comment if this will cause problems (memory, etc.)? Thanks, Christian