|Summary:||ASTERISK-17795: [patch] Monitor files get incorrectly padded during transfer/masq|
|Reporter:||Steve Davies (one47)||Labels:||patch|
|Date Opened:||2011-05-04 09:01:57||Date Closed:|
|Versions:||22.214.171.124 13.18.4||Frequency of|
|Environment:||Attachments:||( 0) monitor_resync_during_masq|
|Description:||This is found in 126.96.36.199, but looking at the source in trunk, it probably applies to 1.8.x and to earlier releases, and may even patch cleanly with the supplied patch.|
1) Inbound DAHDI call bridged to SIP destination 'A'. Monitor is started on the destination channel 'A' using a Dial macro to files call1-in and call1-out.
2) Put call on hold at 'A'. NOTE: the call1-in monitor file stops growing but the call1-out monitor file continues to grow.
3) Dial new call from 'A' to new SIP destination 'B'. Monitor is started on the destination channel 'A' using a Dial macro to files call2-in and call2-out.
4) SIP REFER: Attended transfer 'B' to DAHDI call, and the monitor objects are correctly swapped during masquerade.
5) Instead of updating the call1-in file with silence, the call2-in file has the missing audio written to it in error.
****** ADDITIONAL INFORMATION ******
Attached is an experimental patch for review.
NOTE: If the REFER transfers DAHDI to 'B' instead of 'B' to DAHDI, the monitor files all work fine. The way a transfer occurs is handset dependent, and not user controlled.
The solution I propose (patch attached) is that when ast_do_masquerade in channel.c swaps the chan->monitor values, it calls a function to re-sync the audio files before doing so.