IAX over NAT and ringtones continuing while speaking

Hello,
I have an intermittent problem with a system I am puttong together for someone.

I am using a Server rented on the internet to host the Asterisk server, and I have a collection of IAX2 Hardphones connected to it behind numerous routers

I am seeing a problem whereby when one phone calls another, ie 2001 calls 2002, I sometimes get an effect that the diallers ringtone continues to be heard after the recipient has picked and up begun their convesation.

Now it seems that this is router dependant. I have changed the IAX refresh time to 10 seconds in iax.h in order to keep the return path alive in the routing table. This seems to work as planned.

I have seen reference to this in ther posts but no-one has posted a fix or a reason why this should happen.

The CLI seems to be happy with the call being bridged and does not seem to moana bout it in any way.

There is nothing remarkable in my iax.conf and extensions.conf but will post anyway:

; Inter-Asterisk eXchange driver definition
;
; This configuration is re-read at reload
; or with the CLI command
; reload chan_iax2.so
;
; General settings, like port number to bind to, and
; an option address (the default is to bind to all
; local addresses).
;
[general]
;bindport=4569 ; bindport and bindaddr may be specified
; ; NOTE: bindport must be specified BEFORE
; bindaddr or may be specified on a specific
; bindaddr if followed by colon and port
; (e.g. bindaddr=192.168.0.1:4569)
;bindaddr=192.168.0.1 ; more than once to bind to multiple
; ; addresses, but the first will be the
; ; default
;
disallow=all
allow=ulaw
allow=alaw
disallow=g729
;allow ilbc

[PSTN]
type=friend
username=PSTN
context=primary-incomer

[PSTN-out]
type=peer
username=username
secret=password
host=iax.server.com
qualify=500

[2001]
type=friend
username=2001
secret=express
context=internal
host=dynamic
callerid=Someone

[2002]
type=friend
username=2001
secret=express
context=internal
host=dynamic
callerid=Someone Else

The extensions.conf looks like:

[globals]

[primary-incomer]

exten=>some-PSTN-number, 1, Dial(IAX2/2004)
exten=>some-PSTN-number, 2, Busy()

[internal]

exten=>2001, 1, Dial(IAX2/2001, 100, r)
exten=>2001, 2, Busy()

exten=>2002, 1, Dial(IAX2/2002, 100, r)
exten=>2002, 2, Busy()

There you have it. Any opinions would be welcome.

Regards,

Rob.