|
|
researchv9-SUN3(old)
/*
** Process timeouts for packets
*/
#include "pconfig.h"
#include "proto.h"
#include "packets.h"
#include "pstats.h"
void
ptimeout(sig)
int sig;
{
register Pch_p pcp;
register Pks_p psp;
register int i;
register int retrys;
# ifndef Blit
signal(sig, ptimeout);
# endif
Ptflag = 0;
if ( precvpkt.timo > 0 && ++Ptflag && (precvpkt.timo -= Pscanrate) <= 0 )
{
precvpkt.state = PR_NULL;
ptrace("RECV TIMEOUT");
}
for ( pcp = pconvs, retrys = 0 ; pcp < pconvsend && retrys < MAXTIMORETRYS ; pcp++ )
for ( psp = pcp->nextpkt, i = NPCBUFS ; i-- ; )
{
if ( psp->timo > 0 && ++Ptflag && (psp->timo -= Pscanrate) <= 0 )
{
ptrace("XMIT TIMEOUT");
psp->timo = Pxtimeout;
Pxfunc(&psp->pkt, psp->size);
PSTATS(PS_TIMOPKT);
plogpkt(&psp->pkt, PLOGOUT);
ptrace("END TIMEOUT");
if ( ++retrys >= MAXTIMORETRYS )
break;
}
if ( ++psp >= &pcp->pkts[NPCBUFS] )
psp = pcp->pkts;
}
# ifndef Blit
if ( Ptflag )
(void)alarm(Pscanrate);
# endif
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.