Richard wrote: > Without looking into the code, queueing a busy frame to wake up the read > thread and look at the call-forward string seems wrong. The null frame > should be queued instead.
This is the code from branch 11 SVN (branch 12 seems to be the same). Whilst it is done as a drop through, part of the logic may be to provide and appropriate behaviour if redirects have been disabled at a higher level. change_redirecting_information eventually sets the field containing the address information that Dial uses to detect the redirection. case 302: /* Moved temporarily */ case 305: /* Use Proxy */ if (p->owner) { struct ast_party_redirecting redirecting; struct ast_set_party_redirecting update_redirecting; ast_party_redirecting_init(&redirecting); memset(&update_redirecting, 0, sizeof(update_redirecting)); change_redirecting_information(p, req, &redirecting, &update_redirecting, TRUE); ast_channel_set_redirecting(p->owner, &redirecting, &update_redirecting); ast_party_redirecting_free(&redirecting); } /* Fall through */ case 486: /* Busy here */ case 600: /* Busy everywhere */ case 603: /* Decline */ if (p->owner) { sip_handle_cc(p, req, AST_CC_CCBS); ast_queue_control(p->owner, AST_CONTROL_BUSY); One point of detail. It is actually the write to the alertpipe, within ast_queue_control that does the wakeup. -- David Woolley BTS Holdings Plc Tel: +44 (0)20 8401 9000 Fax: +44 (0)20 8401 9100 http://www.bts.co.uk BTS Holdings PLC - Registered office: BTS House, Manor Road, Wallington, SM6 0DD - Registered in England: 1517630 -- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- asterisk-dev mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-dev