From: Derrick Brashear Date: Mon, 31 Jan 2005 04:09:23 +0000 (+0000) Subject: STABLE14-rx-avoid-xmit-overflow-panic-20050107 X-Git-Tag: openafs-devel-1_3_78~50 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=c13731d8fbd83a849c3ab51b3dd3f92137bc7185;p=packages%2Fo%2Fopenafs.git STABLE14-rx-avoid-xmit-overflow-panic-20050107 instead of losing, just send the packets and then make another pass to collect more (cherry picked from commit 1a8519de16a2dad989300da94d597fac57c20c0f) --- 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; }