Asterisk 1.8.7.1 directrtpsetup and reinvite

Asterisk 1.8.7.1 with directrtpsetup=yes in sip.conf appears to be eating re-invites after the call is setup.

Call Flow:

User —> Asterisk —> Carrier

After the carrier sends 200ok and user ACKs, user sends a reinvite to redirect media to a non-natted address. I see the re-invite hit Asterisk, but Asterisk does not send the re-invite to the carrier. What’s up with that?

Is this a regression? If not, you may have a buggy peer. Try setting ignoresdpversion.

I set ignoresdpversion=yes but the affect is the same. The call sets up the originator re-invites to Asterisk, Asterisk 100 Tries, and 200oks, but never relays the re-invite to the peer on the other side, resulting in 1 way audio.

A technical point. Asterisk is a back to back user agent and will never relay a re-invite; it will generate a new invite based no the updated address information.

However, this situation should not cause one way audio, it should just result in Asterisk relaying RTP to a different address. You cannot pass an invalid address in a re-invite with the expectation that it will be forwarded; there are no guaranteed semantics for B2BUAs in this respect.

In particular, if you have configured anything that is incompatible with external bridging, e.g. directmedia=no, monitoring, enabling T, t, or other features, etc., on the Dial application, Asterisk has to retain the RTP stream. Also, when party B clears, Asterisk will re-invite party A back, even if there was an external bridge.

Having said that, there was a recent bug report external bridging failing to propagate across chains of Asterisks, so you may have hit a bug.

Yeah I read a few bugs on this.

issues.asterisk.org/view.php?id=19154
lists.digium.com/pipermail/aster … 48859.html

I’m going to downgrade to 1.6.2 and see what happens.

1.6.2.20 is doing the same thing. It’s not inviting the other side to the new rtp c=

I don’t have anything fancy in my dial plan, it’s just a dial/hangup command.

hi voipguro,
i have the same problem!
Have you solved?

Thanks