diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 6c07d47879fe59b63a61f3e859321b6851a8ec68..4d6a59f837c984f3da406627244c8b11c16cf21d 100644
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -1611,6 +1611,8 @@ static int send_packet(struct iax_frame *f)
 	int callno = f->callno;
 	
 	/* Called with iaxsl held */
+	if (!iaxs[callno])
+		return -1;
 	if (option_debug > 2 && iaxdebug)
 		ast_log(LOG_DEBUG, "Sending %d on %d/%d to %s:%d\n", f->ts, callno, iaxs[callno]->peercallno, ast_inet_ntoa(iabuf, sizeof(iabuf), iaxs[callno]->addr.sin_addr), ntohs(iaxs[callno]->addr.sin_port));
 	/* Don't send if there was an error, but return error instead */
@@ -1618,8 +1620,6 @@ static int send_packet(struct iax_frame *f)
 		ast_log(LOG_WARNING, "Call number = %d\n", callno);
 		return -1;
 	}
-	if (!iaxs[callno])
-		return -1;
 	if (iaxs[callno]->error)
 		return -1;
 	if (f->transfer) {