From: Derrick Brashear Date: Fri, 7 Jan 2005 23:08:27 +0000 (+0000) Subject: rx-avoid-xmit-overflow-panic-20050107 X-Git-Tag: BP-disconnected~61 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=1a8519de16a2dad989300da94d597fac57c20c0f;p=packages%2Fo%2Fopenafs.git rx-avoid-xmit-overflow-panic-20050107 instead of losing, just send the packets and then make another pass to collect more --- 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; }