Index: channels/chan_zap.c =================================================================== --- channels/chan_zap.c (revision 54685) +++ channels/chan_zap.c (working copy) @@ -2759,7 +2759,14 @@ if (p->ss7call) { if (!ss7_grab(p, p->ss7)) { if (!p->alreadyhungup) { - isup_rel(p->ss7->ss7, p->ss7call, ast->hangupcause ? ast->hangupcause : -1); + const char *cause = pbx_builtin_getvar_helper(ast,"SS7_CAUSE"); + int icause = ast->hangupcause ? ast->hangupcause : -1; + + if (cause) { + if (atoi(cause)) + icause = atoi(cause); + } + isup_rel(p->ss7->ss7, p->ss7call, icause); ss7_rel(p->ss7); p->alreadyhungup = 1; } else