Comment why we do a TLF when we get a ``Down'' event in state
``closing''. Pointed out by: archie Don't do a TLF when we get a ``Catastrphic Protocol Reject'' event in state ``closed'' or ``stopped''. Pointed out but not suggested by: archie This makes no difference in the current implementation as LcpLayerFinish() does nothing but log the event, but I disagree in principle because it unbalances the TLF/TLS calls which (IMHO) doesn't fit with the intentions of the RFC. Maybe the RFC author had a reason for this. It can only happen in two circumstances: - if LCP has already been negotiated then stopped or closed and we receive a protocol reject, then we must already have done a TLF. Why do one again and stay in the same state ? - if LCP hasn't yet been started and we receive an unsolicted protocol reject, why should we TLF when we haven't done a TLS ?
This commit is contained in:
parent
b5b8de85ff
commit
3d2de27bce
@ -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.38 1999/01/28 01:56:31 brian Exp $
|
||||
* $Id: fsm.c,v 1.39 1999/02/26 21:28:11 brian Exp $
|
||||
*
|
||||
* TODO:
|
||||
*/
|
||||
@ -302,6 +302,7 @@ fsm_Down(struct fsm *fp)
|
||||
NewState(fp, ST_INITIAL);
|
||||
break;
|
||||
case ST_CLOSING:
|
||||
/* This TLF contradicts the RFC (1661), which ``misses it out'' ! */
|
||||
(*fp->fn->LayerFinish)(fp);
|
||||
NewState(fp, ST_INITIAL);
|
||||
(*fp->parent->LayerFinish)(fp->parent->object, fp);
|
||||
@ -841,7 +842,8 @@ FsmRecvProtoRej(struct fsm *fp, struct fsmheader *lhp, struct mbuf *bp)
|
||||
case PROTO_CCP:
|
||||
if (fp->proto == PROTO_LCP) {
|
||||
fp = &fp->link->ccp.fsm;
|
||||
(*fp->fn->LayerFinish)(fp);
|
||||
/* Despite the RFC (1661), don't do an out-of-place TLF */
|
||||
/* (*fp->fn->LayerFinish)(fp); */
|
||||
switch (fp->state) {
|
||||
case ST_CLOSED:
|
||||
case ST_CLOSING:
|
||||
@ -850,7 +852,8 @@ FsmRecvProtoRej(struct fsm *fp, struct fsmheader *lhp, struct mbuf *bp)
|
||||
NewState(fp, ST_STOPPED);
|
||||
break;
|
||||
}
|
||||
(*fp->parent->LayerFinish)(fp->parent->object, fp);
|
||||
/* See above */
|
||||
/* (*fp->parent->LayerFinish)(fp->parent->object, fp); */
|
||||
}
|
||||
break;
|
||||
case PROTO_MP:
|
||||
|
Loading…
Reference in New Issue
Block a user