[Asterisk-Users] Native Bridging and Polycom 600 Solved

Christian Hecimovic checimovic at qworks.ca
Wed Dec 10 14:59:37 MST 2003


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




More information about the asterisk-users mailing list