diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 4df61c0a31..caa68de716 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -1643,6 +1643,15 @@ static int __find_callno(unsigned short callno, unsigned short dcallno, struct s } } + /* This will occur on the first response to a message that we initiated, + * such as a PING. */ + if (callno && dcallno && iaxs[dcallno] && !iaxs[dcallno]->peercallno && match(sin, callno, dcallno, iaxs[dcallno], check_dcallno)) { + iaxs[dcallno]->peercallno = callno; + res = dcallno; + store_by_peercallno(iaxs[dcallno]); + return res; + } + for (x = 1; !res && x < maxnontrunkcall; x++) { ast_mutex_lock(&iaxsl[x]); if (iaxs[x]) {