o Initialize the PRED1 input queue when we

receive the ResetAck, NOT when we send the
   ResetReq (as per the rfc).
o  SILENTLY ignore CCPs that arrive *before*
   the network phase (as per the rfc).
o  Check that we've actually negotiated PRED1
   before sending PRED1 output.
   This bug has been around for a *VERY* long
   time !  We shouldn't need to explicitly disable
   PRED1 now :-)
This commit is contained in:
Brian Somers 1997-09-10 21:33:32 +00:00
parent 69e86596a7
commit 29a6597c6b
3 changed files with 10 additions and 7 deletions

View File

@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: ccp.c,v 1.14 1997/08/20 23:47:40 brian Exp $
* $Id: ccp.c,v 1.15 1997/08/25 00:29:06 brian Exp $
*
* TODO:
* o Support other compression protocols
@ -130,7 +130,6 @@ CcpSendConfigReq(struct fsm * fp)
void
CcpSendResetReq(struct fsm * fp)
{
Pred1Init(1); /* Initialize Input part */
LogPrintf(LogCCP, "CcpSendResetReq\n");
FsmOutput(fp, CODE_RESETREQ, fp->reqid, NULL, 0);
}
@ -258,7 +257,8 @@ CcpInput(struct mbuf * bp)
if (phase == PHASE_NETWORK)
FsmInput(&CcpFsm, bp);
else {
LogPrintf(LogERROR, "Unexpected CCP in phase %d\n", phase);
if (phase > PHASE_NETWORK)
LogPrintf(LogERROR, "Unexpected CCP in phase %d\n", phase);
pfree(bp);
}
}

View File

@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: fsm.c,v 1.16 1997/08/25 00:29:12 brian Exp $
* $Id: fsm.c,v 1.17 1997/08/31 22:59:27 brian Exp $
*
* TODO:
* o Refer loglevel for log output
@ -711,6 +711,7 @@ void
FsmRecvResetAck(struct fsm * fp, struct fsmheader * lhp, struct mbuf * bp)
{
LogPrintf(fp->LogLevel, "RecvResetAck\n");
Pred1Init(1); /* Initialize Input part */
fp->reqid++;
pfree(bp);
}

View File

@ -17,7 +17,7 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id: hdlc.c,v 1.16 1997/06/09 03:27:22 brian Exp $
* $Id: hdlc.c,v 1.17 1997/08/25 00:29:13 brian Exp $
*
* TODO:
*/
@ -152,8 +152,10 @@ HdlcOutput(int pri, u_short proto, struct mbuf * bp)
if ((proto & 0xfff1) == 0x21) { /* Network Layer protocol */
if (CcpFsm.state == ST_OPENED) {
Pred1Output(pri, proto, bp);
return;
if (CcpInfo.want_proto == PRED1) {
Pred1Output(pri, proto, bp);
return;
}
}
}
if (DEV_IS_SYNC)