RTP Connect Reset by Peer, weird scenario

I’m running AsteriskWin32 (0.66), asterisk ver 1.2.14.

I’m using Cisco 7941 phones, and with a SIP trunk for my lines.

Everything is working fine… Only exception is I’m getting a RTP error when I play a message to a incoming caller before passing the call on to a phone. If i pass a incoming call directly to the phone, everything works fine!

I have a public IP and ALL incoming (all ports, UDP & TCP) traffic for that IP is pointed directly to the PC hosting Asterisk. All out going traffic also goes out on the same public IP.

I’ve tried almost every NAT configuration and various different “caninvite” scenarios for both the SIP connection and the phone device. Nothing seems to correct the error.

;sip.conf
[general]
context = incoming
bindaddr = 0.0.0.0
insecure = very
videosupport = yes
tos = lowdelay
srvlookup = yes
defaultexpiry = 600
nat = route
bindport = 5060
externip = 66.225.35.115

register => :@stl04a.netlogic.net:5060

[4000]
type = friend
context = default
subscribecontext = localhint
callgroup = 1
pickupgroup = 1
host = dynamic
port = 5060
dtmfmode = rfc2833
nat = never
mailbox = 4000
disallow = all
allow = ulaw
canreinvite=yes

[provider]
_register = yes
type = friend
context = incoming
host = stl04a.netlogic.net
port = 5060
outboundproxy = stl04a.netlogic.net
secret = w2tgb88z
dtmfmode = rfc2833
nat = route
username = RFGI
insecure = very
disallow = all
allow = ulaw
canreinvite=no

;extensions.conf
;the following works GREAT, call rings to phone, phone can be awnsered and no problems
[incoming]; working example
exten => _.,1,Answer
exten => _.,2,NoOp(icoming call, ${SIP_HEADER(To)}, ${SIP_HEADER(From)}, ${CALLERID(name)} )
exten => _.,3,Macro(stdexten,4000|4000|SIP/4000)

;if i swapp the names of incomingx and incoming to use the following instead
;it runs throug, plays the inomingwelcome wav file, the phone rings, and then once awnsered the call is dropped and the asterisk console shows RTP Read error, connection reset by peer
[incomingx];
exten => _.,1,Answer
exten => _.,2,NoOp
exten => _.,3,Playback(incomingwelcome)
exten => _.,4,NoOp
exten => _.,5,Macro(stdexten,4000|4000|SIP/4000)

Any ideas? Anyone!?