*** ../../vanilla3.0/tcp_timer.c Tue Apr 28 10:28:02 1998 --- tcp_timer.c Tue Sep 15 15:59:24 1998 *************** *** 12,18 **** */ /* ! * Copyright (c) 1982, 1986, 1988, 1990, 1993, 1995 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without --- 12,18 ---- */ /* ! * Copyright (c) 1982, 1986, 1988, 1990, 1993, 1995, 1998 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without *************** *** 217,222 **** --- 217,242 ---- int timer; { register int rexmt; + #ifdef SACK + struct sackhole *p, *q; + /* + * Free SACK holes for 2MSL and REXMT timers. + */ + if (timer == TCPT_2MSL || timer == TCPT_REXMT) { + q = p = tp->snd_holes; + while (p != 0) { + q = p->next; + free(p, M_PCB); + p = q; + } + tp->snd_holes = 0; + #if defined(SACK) && defined(FACK) + tp->snd_fack = tp->snd_una; + tp->retran_data = 0; + tp->snd_awnd = 0; + #endif /* FACK */ + } + #endif /* SACK */ switch (timer) {