Pierre, can you see if this patch fixes your problem? Thanks. Jeffrey
Index: tcp_syncache.c =================================================================== RCS file: /home/ncvs/src/sys/netinet/tcp_syncache.c,v retrieving revision 1.30 diff -u -r1.30 tcp_syncache.c --- tcp_syncache.c 20 Dec 2002 11:24:02 -0000 1.30 +++ tcp_syncache.c 21 Dec 2002 19:52:18 -0000 @@ -384,14 +384,12 @@ break; sc = nsc; inp = sc->sc_tp->t_inpcb; - INP_LOCK(inp); if (slot == SYNCACHE_MAXREXMTS || slot >= tcp_syncache.rexmt_limit || inp->inp_gencnt != sc->sc_inp_gencnt) { nsc = TAILQ_NEXT(sc, sc_timerq); syncache_drop(sc, NULL); tcpstat.tcps_sc_stale++; - INP_UNLOCK(inp); continue; } /* @@ -399,6 +397,7 @@ * to modify another entry, so do not obtain the next * entry on the timer chain until it has completed. */ + INP_LOCK(inp); (void) syncache_respond(sc, NULL); INP_UNLOCK(inp); nsc = TAILQ_NEXT(sc, sc_timerq);