Audio missing on transferred calls

Here is the setup.

outside calling.
Cell phone->SIP provider->Asterisk->VOIP phone1

VOIP phone1 transfers the call to VOIP phone2. Audio From cell phone to VOIP phone2 works but not vice versa. Direct calls from any combination works. 'sip show channels" shows two active channels (alaw audio).

Also tried:
Cell phone->SIP provider->Asterisk->SIP provider->Cell phone2

Audio missing to other direction. Any ideas?



Really I’m the only one who is suffering about his? Sometimes bidirectional audio works but not every time. It should work everytime IMHO.



Hi This sounds like a classic misconfiguration of NAT.

With conf files not possible to tell realy, but I would guess canreinvite may at issue as well


Hi. Thanks for your reply.

All direct calls from phone A to phone B works. Within Asterisk and/or Asterisk <-> outside phone.

I try to be more specific:
Cell phone A calls to a Asterisk phone B. Audio works fine every time.
Phone B transfers call to a Phone C (this can be a phone within Asterisk or a Cell phone outside). Maybe 50% of times audio is missing from B to C.

This might be a NAT problem but a) why it happens occasionally and b) NAT is configured properly and it works for everything else.

This might be codec problem but a) all the channels have alaw codec which works. Even the transferred call.

I’m out of answers…

I think ianplain’s answer is the right one and should help you. Set canreinvite=no in your sip.conf

I see.

Under [general] in sip.conf
externip = XXX.X92.160.27
localnet =
canreinvite = no

Also tried canreinvite=nonat and directrtpsetup=yes (together and separately)

All voip-phones have (users.conf)

Problem remains. Unfortunately. Maybe 50% of calls work and the other half do not.

Any peers on the same network as asterisk can have nat=no. The peer out to your sip provider should have nat=yes.
You probably don’t want to set directrtpsetup=yes, keep it at no.

You have a weird problem and I’m not sure where else to look to help you. If the media comes in, and stays going through asterisk (not being reinvited out), it should be able to hear wherever it ends up since * is staying in the media path and passing the stream through.

Are there any clues on the cli when this is happening?

If all peers are using the same codec (alaw as you stated), including your sip provider, it shouldn’t be a codec issue. You are setting disallow=all and allow=alaw so you know it is picking alaw for each call leg correct?

This is what sip show channels shows: (first and last queries are non-working calls and second and third are working calls. However I don’t see any difference).

XXX.X97.95.4 0942899750 588b8e12021 00104/00000 0x0 (nothing) No 6006 51c9a7d2375 00102/00000 0x8 (alaw) No Tx: ACK 6005 132613f23ae 00104/00103 0x0 (nothing) Yes Rx: BYE Done
XXX.X97.95.4 0942899750 68E9E4809E2 00101/00002 0x8 (alaw) No Rx: ACK
4 active SIP channels 6006 5230836b1c6 00102/00000 0x8 (alaw) No Tx: ACK 6005 02346478695 00104/00103 0x0 (nothing) Yes Rx: BYE Done
XXX.X97.95.4 0942899750 3E065D25D99 00101/00002 0x8 (alaw) No Rx: ACK
3 active SIP channels 6006 41f1997604f 00102/00000 0x8 (alaw) No Tx: ACK 6005 26240d47742 00104/00103 0x0 (nothing) Yes Rx: BYE Done
XXX.X97.95.4 0942899750 C750837C157 00101/00002 0x8 (alaw) No Rx: ACK
3 active SIP channels 6006 07471d0e46d 00102/00000 0x8 (alaw) No Tx: ACK 6005 0fe75d2624b 00104/00103 0x0 (nothing) Yes Rx: BYE Done
XXX.X97.95.4 0942899750 8160AFB46A6 00101/00002 0x8 (alaw) No Rx: ACK
3 active SIP channels

.32 is operator’s phone which transfers the call, .34 is the destination phone. During the test, all voip phones are within the same subnet as Asterisk.
Cli does not show any error messages if that’s what you meant.
50/50 ratio is not exactly right. 4/5 transferred calls works. There is something I don’t understand (Firewall/router perhaps).


Ok if the phones are on the same subnet as the server then nat should be no

What are the phones and how do they transfer them ?

also a bit confused why this 6005 132613f23ae 00104/00103 0x0 (nothing) Yes Rx: BYE Done is sticking about


I’m aware of NAT parameter. These phones are also used outside LAN so NAT should be enabled. However during the tests LAN has been used to minimize possible problems.
All destination phones are cell phones (Nokia).

The last remark is not essential. The line stays for few secs and disappears automatically. It is just about the timing I have captured ‘sip show channel’ information.




Im not interested in what the cell phones are, its what the voip phones are thats important.

Also how they transfer, is it a native transfer or via the * transfer feature.


Ian, I understood - and answered to - your question.

Cell phone->SIP provider->Asterisk->VOIP phone1 -[transfer]-> VOIP phone2

VOIP phone2 is actually Nokia Cell phone using in VOIP mode.
Also tried XLite. No difference.
VOIP phone1 is Cisco 7940.

I can’t tell whether it is native or Asterisk transfer feature. It is “Transfer” or “BlindTransfer” function of Cisco 7940 in this case.

It seems that blindtransfer using #-method works everytime. Att transfer using #-method behaves the same. (every now and then audio missing)



Another issue:

Is there a way to increase max delay between # and 1 (* and 2) for feature set functions. By default max delay is rather small and fails cos lazy fingers :smile:
Sure I can use just # but…

I think it is:


Did you find a solution? I have the same problem when I set directrtpsetup=yes but I am not using nat.