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:
parent
fecdcfd198
commit
bfeef12e0d
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user