mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-04 20:04:50 +00:00
Ensure that a destination callno of 0 will not match for frames that do not
start a dialog (new, lagrq, and ping). (closes issue #12963) Reported by: russellb Patches: chan_iax2_dup_new_fix4.patch uploaded by jpgrayson (license 492) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@130169 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -7191,12 +7191,21 @@ static int socket_process(struct iax2_thread *thread)
|
||||
* Discussed in the following thread:
|
||||
* http://lists.digium.com/pipermail/asterisk-dev/2008-May/033217.html
|
||||
*/
|
||||
if (f.frametype != AST_FRAME_IAX ||
|
||||
(f.subclass != IAX_COMMAND_NEW &&
|
||||
f.subclass != IAX_COMMAND_PING &&
|
||||
f.subclass != IAX_COMMAND_LAGRQ)) {
|
||||
/* Get the destination call number */
|
||||
dcallno = ntohs(fh->dcallno) & ~IAX_FLAG_RETRANS;
|
||||
|
||||
/* Get the destination call number */
|
||||
dcallno = ntohs(fh->dcallno) & ~IAX_FLAG_RETRANS;
|
||||
|
||||
if (f.frametype == AST_FRAME_IAX &&
|
||||
(f.subclass == IAX_COMMAND_NEW ||
|
||||
f.subclass == IAX_COMMAND_PING ||
|
||||
f.subclass == IAX_COMMAND_LAGRQ)) {
|
||||
dcallno = 0;
|
||||
} else if (!dcallno) {
|
||||
/* All other full-frames must have a non-zero dcallno,
|
||||
* We silently drop this frame since it cannot be a
|
||||
* valid match to an existing call session.
|
||||
*/
|
||||
return 1;
|
||||
}
|
||||
if ((f.frametype == AST_FRAME_IAX) && ((f.subclass == IAX_COMMAND_NEW) || (f.subclass == IAX_COMMAND_REGREQ) ||
|
||||
(f.subclass == IAX_COMMAND_POKE) || (f.subclass == IAX_COMMAND_FWDOWNL) ||
|
||||
|
Reference in New Issue
Block a user