diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index 5187685e2d20eccd65823833bbaa6986617cfd55..daeb7cf503614bb497f9feea2c8e46e0118e9b5e 100644
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -2561,8 +2561,11 @@ static int zt_call(struct ast_channel *ast, char *rdest, int timeout)
 		}
 		if (!(sr = pri_sr_new())) {
 			ast_log(LOG_WARNING, "Failed to allocate setup request channel %d\n", p->channel);
+			pri_destroycall(p->pri->pri, p->call);
+			p->call = NULL;
 			pri_rel(p->pri);
 			ast_mutex_unlock(&p->lock);
+			return -1;
 		}
 		if (p->bearer || (mysig == SIG_FXSKS)) {
 			if (p->bearer) {