Bonjour,
j'ai un petit souci de bridge IAX sur une de mes machines. Je vous explique:


Appel Entrant --(Sip)--> Asterisk 1
Asterisk 1 --(IAX2)--> Asterisk 2 (On décroche l'appel a ce niveau)
Asterisk 2 --(IAX2)--> Asterisk 3
Asterisk 3 --(SIP)--> fournisseur Sip

Le souci se passe sur l'asterisk 2 qui recoit l'appel en Iax2 du serveur 1, pour effectuer desuite un dial via le serveur 3 qui a un compte SIP configuré
L'audio passe une fois sur 2 (ou 10 suivant le cas). C'est un comportement totalement aléatoire, et quand je dis que l'audio ne passe pas, c'est dans les deux sens.

La seule différence que j'ai pu trouver en trançant les appels est "Ooh, voice format changed to 'alaw'" (quand j'ai ce message, l'audio passe bien) en debug sur le serveur 2 après le dial

appel avec audio:
Code:
    -- Executing [s@switch-outgoing-call:149] Dial("IAX2/asterisk1-3770", "IAX2/asterisk3/8801,,L(10000.000000:12000)") in new stack
    -- Setting call duration limit to 10.000 seconds.
[Mar 25 12:24:25] DEBUG[16584][C-00000017]: chan_iax2.c:2634 peercnt_add: ip callno count incremented to 2 for 192.xx.xx.1
[Mar 25 12:24:25] DEBUG[16584][C-00000017]: channel_internal_api.c:933 ast_channel_callid_set: Channel Call ID changing from [C-00000017] to [C-00000017]
[Mar 25 12:24:25] DEBUG[16584][C-00000017]: channel_internal_api.c:933 ast_channel_callid_set: Channel Call ID changing from [C-00000017] to [C-00000017]
[Mar 25 12:24:25] DEBUG[16584][C-00000017]: rtp_engine.c:1154 ast_rtp_instance_early_bridge_make_compatible: Can't find native functions for channel 'IAX2/asterisk3-4475'
[Mar 25 12:24:25] DEBUG[11219]: devicestate.c:368 _ast_device_state: No provider found, checking channel drivers for IAX2 - asterisk3
[Mar 25 12:24:25] DEBUG[11219]: chan_iax2.c:14423 iax2_devicestate: Checking device state for device asterisk3
[Mar 25 12:24:25] DEBUG[11219]: chan_iax2.c:14432 iax2_devicestate: Found peer. What's device state of asterisk3? addr=192.xx.xx.1:4569, defaddr=(null) maxms=2000, lastms=17
[Mar 25 12:24:25] DEBUG[11219]: devicestate.c:464 do_state_change: Changing state for IAX2/asterisk3 - state 6 (Ringing)
[Mar 25 12:24:25] DEBUG[11282]: app_queue.c:2374 device_state_cb: Device 'IAX2/asterisk3' changed to state '6' (Ringing) but we don't care because they're not a member of any queue.
    -- Called IAX2/asterisk3/8801
    -- Call accepted by 192.xx.xx.1:4569 (format alaw)
    -- Format for call is (alaw)
    -- IAX2/asterisk3-4475 is making progress passing it to IAX2/asterisk1-3770
[Mar 25 12:24:25] DEBUG[11265]: chan_iax2.c:11814 socket_process_helper: Callno 3770: Blocked receiving control frame 20.
[Mar 25 12:24:25] DEBUG[11261]: chan_iax2.c:11814 socket_process_helper: Callno 3770: Blocked receiving control frame 20.
[Mar 25 12:24:25] DEBUG[11266][C-00000017]: chan_iax2.c:10560 socket_process_helper: Ooh, voice format changed to 'alaw'
[Mar 25 12:24:25] DEBUG[11267]: chan_iax2.c:10560 socket_process_helper: Ooh, voice format changed to 'alaw'
[Mar 25 12:24:28] DEBUG[11266]: chan_iax2.c:2634 peercnt_add: ip callno count incremented to 4 for 192.xx.xx.2
    -- IAX2/asterisk3-4475 is making progress passing it to IAX2/asterisk1-3770
[Mar 25 12:24:29] DEBUG[11266]: chan_iax2.c:11814 socket_process_helper: Callno 3770: Blocked receiving control frame 20.
[Mar 25 12:24:29] DEBUG[11258]: chan_iax2.c:11814 socket_process_helper: Callno 3770: Blocked receiving control frame 20.
[Mar 25 12:24:33] DEBUG[11265]: chan_iax2.c:11814 socket_process_helper: Callno 3770: Blocked receiving control frame 20.
[Mar 25 12:24:33] DEBUG[11266]: chan_iax2.c:10921 socket_process_helper: Immediately destroying 3770, having received hangup
[Mar 25 12:24:33] DEBUG[11220]: cdr.c:1266 cdr_object_finalize: Finalized CDR for IAX2/asterisk1-3770 - start 1427282665.111792 answer 1427282665.184411 end 1427282673.996919 dispo NO ANSWER
[Mar 25 12:24:33] DEBUG[16584][C-00000017]: channel.c:2699 ast_hangup: Hanging up channel 'IAX2/asterisk3-4475'
[Mar 25 12:24:33] DEBUG[16584][C-00000017]: chan_iax2.c:5269 iax2_hangup: We're hanging up IAX2/asterisk3-4475 now...
Appel sans audio
Code:
    -- Executing [s@switch-outgoing-call:149] Dial("IAX2/asterisk1-52", "IAX2/asterisk3/8801,,L(10000.000000:12000)") in new stack
    -- Setting call duration limit to 10.000 seconds.
[Mar 25 12:25:27] DEBUG[16690][C-00000019]: chan_iax2.c:2634 peercnt_add: ip callno count incremented to 4 for 192.xx.xx.1
[Mar 25 12:25:27] DEBUG[16690][C-00000019]: channel_internal_api.c:933 ast_channel_callid_set: Channel Call ID changing from [C-00000019] to [C-00000019]
[Mar 25 12:25:27] DEBUG[16690][C-00000019]: channel_internal_api.c:933 ast_channel_callid_set: Channel Call ID changing from [C-00000019] to [C-00000019]
[Mar 25 12:25:27] DEBUG[16690][C-00000019]: rtp_engine.c:1154 ast_rtp_instance_early_bridge_make_compatible: Can't find native functions for channel 'IAX2/asterisk3-12328'
[Mar 25 12:25:27] DEBUG[11219]: devicestate.c:368 _ast_device_state: No provider found, checking channel drivers for IAX2 - asterisk3
[Mar 25 12:25:27] DEBUG[11219]: chan_iax2.c:14423 iax2_devicestate: Checking device state for device asterisk3
[Mar 25 12:25:27] DEBUG[11219]: chan_iax2.c:14432 iax2_devicestate: Found peer. What's device state of asterisk3? addr=192.xx.xx.1:4569, defaddr=(null) maxms=2000, lastms=17
[Mar 25 12:25:27] DEBUG[11219]: devicestate.c:464 do_state_change: Changing state for IAX2/asterisk3 - state 6 (Ringing)
[Mar 25 12:25:27] DEBUG[11282]: app_queue.c:2374 device_state_cb: Device 'IAX2/asterisk3' changed to state '6' (Ringing) but we don't care because they're not a member of any queue.
    -- Called IAX2/asterisk3/8801
    -- Call accepted by 192.xx.xx.1:4569 (format alaw)
    -- Format for call is (alaw)
    -- IAX2/asterisk3-12328 is making progress passing it to IAX2/asterisk1-52
[Mar 25 12:25:27] DEBUG[11260]: chan_iax2.c:11814 socket_process_helper: Callno 52: Blocked receiving control frame 20.
[Mar 25 12:25:27] DEBUG[11261]: chan_iax2.c:11814 socket_process_helper: Callno 52: Blocked receiving control frame 20.
[Mar 25 12:25:28] DEBUG[11266]: chan_iax2.c:2634 peercnt_add: ip callno count incremented to 4 for 192.xx.xx.2
    -- IAX2/asterisk3-12328 is making progress passing it to IAX2/asterisk1-52
[Mar 25 12:25:30] DEBUG[11259]: chan_iax2.c:11814 socket_process_helper: Callno 52: Blocked receiving control frame 20.
[Mar 25 12:25:30] DEBUG[11259]: chan_iax2.c:11814 socket_process_helper: Callno 52: Blocked receiving control frame 20.
[Mar 25 12:25:34] DEBUG[11256]: chan_iax2.c:2666 peercnt_remove: ip callno count decremented to 3 for 1.10.0.67
[Mar 25 12:25:34] DEBUG[11256]: chan_iax2.c:2666 peercnt_remove: ip callno count decremented to 3 for 192.xx.xx.1
[Mar 25 12:25:38] DEBUG[11259]: chan_iax2.c:3034 sched_delay_remove: schedule decrement of callno used for 192.xx.xx.2 in 60 seconds
[Mar 25 12:25:38] DEBUG[11256]: chan_iax2.c:2666 peercnt_remove: ip callno count decremented to 3 for 192.xx.xx.2
[Mar 25 12:25:40] DEBUG[11264]: chan_iax2.c:11814 socket_process_helper: Callno 52: Blocked receiving control frame 20.
[Mar 25 12:25:40] DEBUG[11261]: chan_iax2.c:10921 socket_process_helper: Immediately destroying 52, having received hangup
[Mar 25 12:25:40] DEBUG[16690][C-00000019]: channel.c:2699 ast_hangup: Hanging up channel 'IAX2/asterisk3-12328'
[Mar 25 12:25:40] DEBUG[11220]: cdr.c:1266 cdr_object_finalize: Finalized CDR for IAX2/asterisk1-52 - start 1427282726.589331 answer 1427282726.662079 end 1427282740.296551 dispo NO ANSWER
[Mar 25 12:25:40] DEBUG[16690][C-00000019]: chan_iax2.c:5269 iax2_hangup: We're hanging up IAX2/asterisk3-12328 now...
Dans ces deux exemple, je n'ai pas décroché, le symptome étant quand a lui présent de toutes façons dès que l'on a pas ce fameux "Ooh, voice format changed to 'alaw'"

La config Iax est très simple:

Code:
[general]
bindport=4569
bindaddr=0.0.0.0
language=fr
bandwidth=high
disallow=all
allow=alaw
allow=slin
calltokenoptional=0.0.0.0/0.0.0.0
maxcallnumbers=16382
maxcallnumbers_nonvalidated=8192
codecpriority=host


[asterisk1]
type=friend
transfer=no
username=iaxasterisk2
sendani=yes
secret=xxxx
auth=plaintext
context=fromiax
qualify=yes
trunk=no
host=192.xx.xx.1
bindport=4569
maxauthreq=50

[asterisk2]
type=friend
transfer=no
username=iaxasterisk2
sendani=yes
secret=xxxx
auth=plaintext
context=fromiax
qualify=yes
trunk=no
host=192.xx.xx.2
bindport=4569
maxauthreq=50
Je ne sais pas si la conf sip de asterisk1 et asterisk3 aiderait à expliquer le comportement.

Autre chose:
si sur l'asterisk2, je fais un Ringing() avant le Aswer(), je n'ai pas ce problème.
si sur l'asterisk2, je ne fais pas de answer(), le problème reste le même.

Merci de votre aide.