Recordings hang for external callers

Background
I have two servers running Asterisk 1.6.1.1. All of my handsets receive DHCP, their configurations, and register with SERVER_1. My PRI lines are connected to SERVER_2 via a 2-port PRI card. SERVER_2 communicates to SERVER_1 via IAX. SERVER_2 is just a gateway. No SIP devices register with it and it does not handle any services outside of facilitating connections to and from the PRIs.

Problem
When Asterisk tries to play a recorded sound for an external caller (voicemail greeting or any other sound, to a caller from outside of the local server), the external caller only hears silence and Asterisk hangs on that step of the call process. Meaning that it doesn’t just keep playing silently through the menu prompts (in the case of voicemail). There are no errors logged to the Asterisk “messages” or “full” log files.

Local callers (originating from the local server) will hear the sound just fine and voicemail will progress through the prompts as it should.

Both incoming and outgoing voice calls function correctly. Only the playback of recordings (and other sounds) seems to be affected. I have a feeling that this is somehow a codec issue with either the IAX connection between my two servers or a codec issue with my connection to the PRIs, but I have not been able to track that down.

I have configured the iax.conf on both servers to “bandwidth=high” and “allow=all” (probably redundant).

To eliminate voicemail from being the problem, I have configured an extension to simply answer and play a sound (Playback(tt-weasels)) before hanging up. Calls to that extension from another local extension have the sound played back to them and then have the call hung up. Calls to that extension from outside (originating from the PRIs) get only silence, and the call never gets to the “hangup” step.

If anyone has any ideas for me to try next, I would love to hear them!

UPDATE:

The problem still exists, but I feel that I have narrowed the problem down to the IAX connection between the servers. To do this, I reconfigured a handset to register with SERVER_2 and re-wrote the extensions.conf files on both servers to properly address the phone in its new location. Calls between that phone on SERVER_2 and phones on SERVER_1 work just fine. The recorded audio from the voicemail prompts and the “tt-weasels” file still do not play, and halt the call at that step.

Is it possible that there is a codec issue preventing these audio files from being played over the IAX connection? Enabling IAX2 debugging does not show anything useful.

UPDATE:

I have now tracked it down to calls that originate on the SERVER_2 side of the IAX connection. If I configure an extension on SERVER_2 to answer with an audio file (tt-weasels), I can call that extension from a handset registered to SERVER_1 (therefore through the IAX connection) and hear the file fine. If I do the reverse, and call an identically-configured extension on SERVER_1 from SERVER_2, I only get silence, or the slightest blip of garbled sound.