[Home]

Summary:ASTERISK-15615: [patch] Attended transfer broken in 1.6.2.2
Reporter:jamhed (jamhed)Labels:
Date Opened:2010-02-12 08:51:26.000-0600Date Closed:2010-03-01 11:25:58.000-0600
Priority:BlockerRegression?No
Status:Closed/CompleteComponents:PBX/General
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:( 0) bug16816.patch
Description:1. A calls B
2. B picks up and talks to A
3. B does attended transfer to C
4. C picks up, but B still hears ringing
5. A and B are connected again (AT timeout exceeded on console)

****** ADDITIONAL INFORMATION ******

   -- Called 31
   -- SIP/31-00000021 is ringing
   -- Local/31@dialplan_1-ab26;1 is ringing
   -- SIP/31-00000021 answered Local/31@dialplan_1-ab26;2
   -- Local/31@dialplan_1-ab26;1 answered SIP/35-00000020
   -- Started music on hold, class 'default', on SIP/31-00000021
   -- <SIP/35-00000020> Playing 'pbx-transfer.gsm' (language 'en')
   -- Executing [2951111@dialplan_in_1:1] Set("Local/2951111@dialplan_in_1-a351;2", "CALLERID(num)=2919688") in new stack
   -- Executing [2951111@dialplan_in_1:2] Dial("Local/2951111@dialplan_in_1-a351;2", "SIP/2951111@2919688") in new stack
 == Using SIP RTP CoS mark 5
   -- Called 2951111@2919688
   -- SIP/2919688-00000022 is making progress passing it to Local/2951111@dialplan_in_1-a351;2
   -- SIP/2919688-00000022 answered Local/2951111@dialplan_in_1-a351;2
[Feb 12 19:49:16] NOTICE[18352]: features.c:2211 feature_request_and_dial: We exceeded our AT-timeout
   -- Executing [h@dialplan_in_1:1] AGI("Local/2951111@dialplan_in_1-a351;2", "agi://127.0.0.1/notify/hangup?Local:2919688::ANSWER:Local/2951111@dialplan_in_1-a351;2") in new stack
   -- Stopped music on hold on SIP/31-00000021
   -- <SIP/35-00000020> Playing 'beep.gsm' (language 'en')
Comments:By: Leif Madsen (lmadsen) 2010-02-12 09:05:15.000-0600

There are several known issues about this reported against 1.6.2.2 if you do a search for them. Please test 1.6.2.3-rc2 as these are likely already fixed.

By: jamhed (jamhed) 2010-02-12 11:16:41.000-0600

Yeah, it was fixed in 1.6.2.3-rc2, thanks!

By: Arno C (arno) 2010-02-12 18:42:56.000-0600

In branch 1.6.2 revision 246073 (246070) breaks it again.

By: Sebastian Gutierrez (sum) 2010-02-16 15:36:58.000-0600

anyone following this issue? I think transfer is a basic critical feature. I can test any patch.

By: Bryan Vyhmeister (brycv) 2010-02-21 09:51:28.000-0600

To confirm the other comment, this issue is observed in 1.6.2.4 but rolling back to 1.6.2.3-rc2 did fix it.

By: Leif Madsen (lmadsen) 2010-02-22 14:43:33.000-0600

1.6.2.4 is actually a security release based on 1.6.2.2, which means 1.6.2.3-rc2 actually has fixes in it that 1.6.2.4 does not. Looks like I can close this issue as resolved.

By: Leif Madsen (lmadsen) 2010-02-22 14:45:18.000-0600

Oh I just noticed someone posted that this was broken again in a revision number. I'm marking this as a blocker to be checked by a developer to determine what happened in the commit mentioned by arno.

If anyone can test this with latest 1.6.2 branch to confirm if this is still an issue would help greatly.

By: Leif Madsen (lmadsen) 2010-02-22 14:47:56.000-0600

Confirmed by jpeeler this is currently in progress and blocking the next version.

By: frawd (frawd) 2010-02-25 16:55:28.000-0600

In latest 1.6.2 rev (248643) I have almost the same situation, except for the last step:

1. A calls B
2. B picks up and talks to A
3. B does attended transfer to C
4. As soon as C picks up B is immediately reconnected to A

In my case B is already a Local channel with "bn" options, like so
A calls B => A calls Local/xxxx@yyyy/bn.

I'll post logs tomorrow if useful, but if I remember well when C picks up it is strangely softhanguped.



By: Andrey Solovyev (corruptor) 2010-02-26 05:10:56.000-0600

1.6.0 rev 248953: situation is the same as frawd's
After C picks up B I've got warning and then hangup
[Feb 26 13:37:18] VERBOSE[1037] logger.c:     -- SIP/1107-0000000d answered Local/1107@internal-56b0;2
[Feb 26 13:37:18] WARNING[1037] chan_local.c: New unhandled control frame added!!!

and then B reconnected to A.

By: frawd (frawd) 2010-02-26 16:17:39.000-0600

That's the log I wanted to paste...

corruptor: is B a Local channel like in my case?

By: Jeff Peeler (jpeeler) 2010-02-26 17:30:38.000-0600

Uploaded patch narrows modifications made dealing with local channels without losing the corrected behavior reported in 14992, testing is appreciated.

By: jamhed (jamhed) 2010-02-27 00:39:02.000-0600

jpeeler: That works for me, I've manually patched Asterisk 1.6.2.3-rc2 because patch you've provided failed to apply to that source tree.

I suppose it was meant to look like this:

  if (other) {
     if (f->frametype == AST_FRAME_CONTROL && f->subclass == AST_CONTROL_RINGING) {
        ast_setstate(other, AST_STATE_RINGING);
     }
     ast_queue_frame(other, f);
     ast_channel_unlock(other);
  }



By: Andrey Solovyev (corruptor) 2010-02-27 04:40:02.000-0600

I've applied the patch to SVN 1.6.0 version and attended transfers work.



By: Digium Subversion (svnbot) 2010-03-01 11:02:04.000-0600

Repository: asterisk
Revision: 249536

U   branches/1.4/channels/chan_local.c

------------------------------------------------------------------------
r249536 | jpeeler | 2010-03-01 11:02:03 -0600 (Mon, 01 Mar 2010) | 11 lines

Modify queued frames from local channels to not set the other side to up

In this case, attended transfers were broken due to ast_feature_request_and_dial
detecting the channel being set to up before the answer frame could be read and
therefore failing to mark the channel as ready. This fix is a regression fix for
244785, which should continue to work properly as well.

(closes issue ASTERISK-15615)
Reported by: jamhed
Tested by: jamhed, corruptor

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=249536

By: Digium Subversion (svnbot) 2010-03-01 11:11:32.000-0600

Repository: asterisk
Revision: 249538

_U  trunk/
U   trunk/channels/chan_local.c

------------------------------------------------------------------------
r249538 | jpeeler | 2010-03-01 11:11:31 -0600 (Mon, 01 Mar 2010) | 18 lines

Merged revisions 249536 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
 r249536 | jpeeler | 2010-03-01 11:02:03 -0600 (Mon, 01 Mar 2010) | 11 lines
 
 Modify queued frames from local channels to not set the other side to up
 
 In this case, attended transfers were broken due to ast_feature_request_and_dial
 detecting the channel being set to up before the answer frame could be read and
 therefore failing to mark the channel as ready. This fix is a regression fix for
 244785, which should continue to work properly as well.
 
 (closes issue ASTERISK-15615)
 Reported by: jamhed
 Tested by: jamhed, corruptor
........

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=249538

By: Digium Subversion (svnbot) 2010-03-01 11:13:17.000-0600

Repository: asterisk
Revision: 249539

_U  branches/1.6.0/
U   branches/1.6.0/channels/chan_local.c

------------------------------------------------------------------------
r249539 | jpeeler | 2010-03-01 11:13:16 -0600 (Mon, 01 Mar 2010) | 25 lines

Merged revisions 249538 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
 r249538 | jpeeler | 2010-03-01 11:11:31 -0600 (Mon, 01 Mar 2010) | 18 lines
 
 Merged revisions 249536 via svnmerge from
 https://origsvn.digium.com/svn/asterisk/branches/1.4
 
 ........
   r249536 | jpeeler | 2010-03-01 11:02:03 -0600 (Mon, 01 Mar 2010) | 11 lines
   
   Modify queued frames from local channels to not set the other side to up
   
   In this case, attended transfers were broken due to ast_feature_request_and_dial
   detecting the channel being set to up before the answer frame could be read and
   therefore failing to mark the channel as ready. This fix is a regression fix for
   244785, which should continue to work properly as well.
   
   (closes issue ASTERISK-15615)
   Reported by: jamhed
   Tested by: jamhed, corruptor
 ........
................

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=249539

By: Digium Subversion (svnbot) 2010-03-01 11:19:08.000-0600

Repository: asterisk
Revision: 249548

_U  branches/1.6.1/
U   branches/1.6.1/channels/chan_local.c

------------------------------------------------------------------------
r249548 | jpeeler | 2010-03-01 11:19:07 -0600 (Mon, 01 Mar 2010) | 25 lines

Merged revisions 249538 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
 r249538 | jpeeler | 2010-03-01 11:11:31 -0600 (Mon, 01 Mar 2010) | 18 lines
 
 Merged revisions 249536 via svnmerge from
 https://origsvn.digium.com/svn/asterisk/branches/1.4
 
 ........
   r249536 | jpeeler | 2010-03-01 11:02:03 -0600 (Mon, 01 Mar 2010) | 11 lines
   
   Modify queued frames from local channels to not set the other side to up
   
   In this case, attended transfers were broken due to ast_feature_request_and_dial
   detecting the channel being set to up before the answer frame could be read and
   therefore failing to mark the channel as ready. This fix is a regression fix for
   244785, which should continue to work properly as well.
   
   (closes issue ASTERISK-15615)
   Reported by: jamhed
   Tested by: jamhed, corruptor
 ........
................

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=249548

By: Digium Subversion (svnbot) 2010-03-01 11:25:56.000-0600

Repository: asterisk
Revision: 249580

_U  branches/1.6.2/
U   branches/1.6.2/channels/chan_local.c

------------------------------------------------------------------------
r249580 | jpeeler | 2010-03-01 11:25:55 -0600 (Mon, 01 Mar 2010) | 25 lines

Merged revisions 249538 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
 r249538 | jpeeler | 2010-03-01 11:11:31 -0600 (Mon, 01 Mar 2010) | 18 lines
 
 Merged revisions 249536 via svnmerge from
 https://origsvn.digium.com/svn/asterisk/branches/1.4
 
 ........
   r249536 | jpeeler | 2010-03-01 11:02:03 -0600 (Mon, 01 Mar 2010) | 11 lines
   
   Modify queued frames from local channels to not set the other side to up
   
   In this case, attended transfers were broken due to ast_feature_request_and_dial
   detecting the channel being set to up before the answer frame could be read and
   therefore failing to mark the channel as ready. This fix is a regression fix for
   244785, which should continue to work properly as well.
   
   (closes issue ASTERISK-15615)
   Reported by: jamhed
   Tested by: jamhed, corruptor
 ........
................

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=249580