Index: sys/netinet/tcp_syncache.c =================================================================== RCS file: /home/ncvs/src/sys/netinet/tcp_syncache.c,v retrieving revision 1.5.2.4 diff -u -r1.5.2.4 tcp_syncache.c --- sys/netinet/tcp_syncache.c 24 Jan 2002 16:09:08 -0000 1.5.2.4 +++ sys/netinet/tcp_syncache.c 24 Feb 2002 19:20:29 -0000 @@ -666,7 +666,7 @@ tp->rcv_wnd = sc->sc_wnd; tp->rcv_adv += tp->rcv_wnd; - tp->t_flags = sc->sc_tp->t_flags & (TF_NOPUSH|TF_NODELAY); + tp->t_flags = sototcpcb(lso)->t_flags & (TF_NOPUSH|TF_NODELAY); if (sc->sc_flags & SCF_NOOPT) tp->t_flags |= TF_NOOPT; if (sc->sc_flags & SCF_WINSCALE) { @@ -839,6 +839,11 @@ */ if (sc->sc_flags & SCF_TIMESTAMP) sc->sc_tsrecent = to->to_tsval; + /* + * PCB may have changed, pick up new values. + */ + sc->sc_tp = tp; + sc->sc_inp_gencnt = tp->t_inpcb->inp_gencnt; if (syncache_respond(sc, m) == 0) { s = splnet(); TAILQ_REMOVE(&tcp_syncache.timerq[sc->sc_rxtslot],