Index: channels/chan_sip.c =================================================================== --- channels/chan_sip.c (revision 288635) +++ channels/chan_sip.c (working copy) @@ -6822,9 +6822,14 @@ * we should decode the uri before storing it in the channel, but leave it encoded in the sip_pvt * structure so that there aren't issues when forming URI's */ - decoded_exten = ast_strdupa(i->exten); - ast_uri_decode(decoded_exten); - ast_copy_string(tmp->exten, decoded_exten, sizeof(tmp->exten)); + if (ast_exists_extension(NULL, i->context, i->exten, 1, i->cid_num)) { + /* encoded in dialplan, so keep extension encoded */ + ast_copy_string(tmp->exten, i->exten, sizeof(tmp->exten)); + } else { + decoded_exten = ast_strdupa(i->exten); + ast_uri_decode(decoded_exten); + ast_copy_string(tmp->exten, decoded_exten, sizeof(tmp->exten)); + } /* Don't use ast_set_callerid() here because it will * generate an unnecessary NewCallerID event */