Index: channels/chan_sip.c =================================================================== --- channels/chan_sip.c (revision 355276) +++ channels/chan_sip.c (working copy) @@ -10353,7 +10353,11 @@ snprintf(tmp, sizeof(tmp), "%u %s", seqno, sip_methods[sipmethod].text); add_header(req, "Via", p->via); - if (p->route) { + /* + * Use the learned route set unless this is a CANCEL. For a CANCEL + * we have to send to the same destination as the original INVITE. + */ + if (p->route && sipmethod != SIP_CANCEL) { set_destination(p, p->route->hop); add_route(req, is_strict ? p->route->next : p->route); }