mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
Merged revisions 75927 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r75927 | russell | 2007-07-19 10:49:42 -0500 (Thu, 19 Jul 2007) | 6 lines When processing full frames, take sequence number wraparound into account when deciding whether or not we need to request retransmissions by sending a VNAK. This code could cause VNAKs to be sent erroneously in some cases, and to not be sent in other cases when it should have been. (closes issue #10237, reported and patched by mihai) ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@75928 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -6714,7 +6714,9 @@ static int socket_process(struct iax2_thread *thread)
|
||||
if (option_debug)
|
||||
ast_log(LOG_DEBUG, "Packet arrived out of order (expecting %d, got %d) (frametype = %d, subclass = %d)\n",
|
||||
iaxs[fr->callno]->iseqno, fr->oseqno, f.frametype, f.subclass);
|
||||
if (iaxs[fr->callno]->iseqno > fr->oseqno) {
|
||||
/* Check to see if we need to request retransmission,
|
||||
* and take sequence number wraparound into account */
|
||||
if ((unsigned char) (iaxs[fr->callno]->iseqno - fr->oseqno) < 128) {
|
||||
/* If we've already seen it, ack it XXX There's a border condition here XXX */
|
||||
if ((f.frametype != AST_FRAME_IAX) ||
|
||||
((f.subclass != IAX_COMMAND_ACK) && (f.subclass != IAX_COMMAND_INVAL))) {
|
||||
|
Reference in New Issue
Block a user