From 1a8519de16a2dad989300da94d597fac57c20c0f Mon Sep 17 00:00:00 2001 From: Derrick Brashear Date: Fri, 7 Jan 2005 23:08:27 +0000 Subject: [PATCH] rx-avoid-xmit-overflow-panic-20050107 instead of losing, just send the packets and then make another pass to collect more --- src/rx/rx.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/rx/rx.c b/src/rx/rx.c index bcdb83703..27adda19f 100644 --- a/src/rx/rx.c +++ b/src/rx/rx.c @@ -5032,6 +5032,9 @@ rxi_Start(struct rxevent *event, register struct rx_call *call, if (!(call->flags & RX_CALL_TQ_BUSY)) { call->flags |= RX_CALL_TQ_BUSY; do { +#endif /* AFS_GLOBAL_RXLOCK_KERNEL */ + restart: +#ifdef AFS_GLOBAL_RXLOCK_KERNEL call->flags &= ~RX_CALL_NEED_START; #endif /* AFS_GLOBAL_RXLOCK_KERNEL */ nXmitPackets = 0; @@ -5085,7 +5088,12 @@ rxi_Start(struct rxevent *event, register struct rx_call *call, /* Transmit the packet if it needs to be sent. */ if (!clock_Lt(&now, &p->retryTime)) { if (nXmitPackets == maxXmitPackets) { - osi_Panic("rxi_Start: xmit list overflowed"); + rxi_SendXmitList(call, xmitList, nXmitPackets, + istack, &now, &retryTime, + resending); + osi_Free(xmitList, maxXmitPackets * + sizeof(struct rx_packet *)); + goto restart; } xmitList[nXmitPackets++] = p; } -- 2.39.5