diff -Nur a/channels/chan_sip.c b/channels/chan_sip.c --- a/channels/chan_sip.c 2014-12-10 15:40:27.000000000 +0100 +++ b/channels/chan_sip.c 2014-12-17 10:21:30.240629708 +0100 @@ -11832,7 +11832,8 @@ */ if (p->route && !(sipmethod == SIP_CANCEL || - (sipmethod == SIP_ACK && (p->invitestate == INV_COMPLETED || p->invitestate == INV_CANCELLED)))) { + (sipmethod == SIP_ACK && (p->invitestate == INV_COMPLETED || p->invitestate == INV_CANCELLED)) || + (sipmethod == SIP_UPDATE && (p->invitestate == INV_PROCEEDING || p->invitestate == INV_EARLY_MEDIA)))) { set_destination(p, p->route->hop); add_route(req, is_strict ? p->route->next : p->route); }