Summary:ASTERISK-16853: Call dropped on SIP REFER in 1.8.0
Reporter:Jonas Bofjäll (job)Labels:
Date Opened:2010-10-22 14:54:18Date Closed:2010-11-18 14:03:30.000-0600
Versions:Frequency of
Description:Asterisk drops a call silently when SIP REFER is sent. The call is dropped when ast_queue_control is called in main/channel.c to read the remaining frames.

There are no clues left in debug log or sip debug when this happens which makes for sad users. This behavior was introduced in rc4, and call transfers using SIP has been broken since then.

See below for a patch. The correct way to do this is probably to fix ast_check_hangup so it does not return true when the channel is clearly not hung up yet.


Here is an ugly patch to make call transfers work:

--- main/channel.c      2010-10-22 18:22:31.000000000 +0200
+++ main/channel.c      2010-10-22 21:49:44.669221930 +0200
@@ -3620,7 +3620,7 @@
                * frame. */
-               if (ast_check_hangup(chan)) {
-                       ast_queue_control(chan, AST_CONTROL_HANGUP);
-               } else {
+//             if (ast_check_hangup(chan)) {
+//                     ast_queue_control(chan, AST_CONTROL_HANGUP);
+//             } else {
                       goto done;
-               }
+//             }
Comments:By: Paul Belanger (pabelanger) 2010-10-22 15:10:28

Thanks for the bug report. This particular bug has already been reported into our bug tracking system, but please feel free to report any further bugs you find. Thanks!