this is much more correct, we respond to the NT sending RR commands instead of us sending RR commands on the timer.

git-svn-id: http://svn.openzap.org/svn/openzap/trunk@123 a93c3328-9c30-0410-af19-c9cd2b2d52af
This commit is contained in:
Anthony Minessale 2007-05-24 00:53:06 +00:00
parent 37bc1f714a
commit 06f3ac6402

View File

@ -501,15 +501,13 @@ int Q921Rx12(L2TRUNK trunk)
/* check for I frame */ /* check for I frame */
if((mes[2] & 0x01) == 0) if((mes[2] & 0x01) == 0)
{ {
L2INT vs = trunk->vs;
/* we increment before we "really" know its good so that if we send in the callback, we use the right nr */ /* we increment before we "really" know its good so that if we send in the callback, we use the right nr */
trunk->vr++; trunk->vr++;
if(Q921Tx23Proc(trunk, smes, size-2) >= 0) /* -2 to clip away CRC */ if(Q921Tx23Proc(trunk, smes, size-2) >= 0) /* -2 to clip away CRC */
{ {
if (vs == trunk->vs) {
Q921SendRR(trunk, (mes[0]&0xfc)>>2, (mes[0]>>1)&0x01, mes[1]>>1, mes[3]&0x01); Q921SendRR(trunk, (mes[0]&0xfc)>>2, (mes[0]>>1)&0x01, mes[1]>>1, mes[3]&0x01);
} }
}
else else
{ {
/* todo: whatever*/ /* todo: whatever*/
@ -520,10 +518,10 @@ int Q921Rx12(L2TRUNK trunk)
/* check for RR */ /* check for RR */
else if(mes[2] ==0x01) else if(mes[2] ==0x01)
{ {
if (((mes[0]>>1)&0x01) == (trunk->NetUser == Q921_TE ? 1 : 0)) { /* if this is a command */
Q921SendRR(trunk, (mes[0]&0xfc)>>2, (mes[0]>>1)&0x01, mes[1]>>1, mes[2]&0x01);
}
/* todo: we probably should schedule to send RR at timeout here */
/* todo: check if RR is responce to I */
Q921T203TimerStart(trunk);
} }
/* check for RNR */ /* check for RNR */