--- chan_zap.c 2005-04-22 13:39:47.051230941 +0530 +++ chan_zap.c.modified 2005-04-22 13:40:42.440951585 +0530 @@ -6867,6 +6867,30 @@ /* Trust PRI */ #ifdef ZAPATA_PRI if (p->pri) { + + if(p->call) + { + ast_log(LOG_WARNING, "************ Call not null for %d channel on span %d, Forcing Restart ************\n",PRI_CHANNEL(channelmatch), p->pri->span); + + if (p->pri && p->pri->pri) { + if (!pri_grab(p, p->pri)) { + pri_hangup(p->pri->pri, p->call, -1); + pri_destroycall(p->pri->pri, p->call); + pri_rel(p->pri); + } else + ast_log(LOG_WARNING, "Failed to grab PRI!\n"); + } else + ast_log(LOG_WARNING, "The PRI Call have not been destroyed\n"); + + p->call = NULL; + + ast_mutex_lock(&p->lock); + pri_reset(p->pri->pri, PVT_TO_CHANNEL(p)); + p->resetting = 1; + ast_mutex_unlock(&p->lock); + return 0; + } + if (p->resetting || p->call) return 0; else