PSI UPDATE
r2720 | ffr | 2008-10-13 15:40:07 +1100 (Mon, 13 Oct 2008) | 2 lines
This commit is contained in:
46
nread.c
46
nread.c
@@ -126,8 +126,10 @@ extern int VerifyChannel(mkChannel *self); /* defined in network.c */
|
||||
int NetReadRegister(pNetRead self, mkChannel *pSock, eNRType eType,
|
||||
SConnection *pCon)
|
||||
{
|
||||
NetItem sItem;
|
||||
|
||||
NetItem sItem, sEntry;
|
||||
char buffer[80];
|
||||
int iRet;
|
||||
|
||||
assert(self);
|
||||
if(!VerifyChannel(pSock))
|
||||
{
|
||||
@@ -142,6 +144,20 @@ extern int VerifyChannel(mkChannel *self); /* defined in network.c */
|
||||
sItem.iReadable = 0;
|
||||
memset(sItem.pHold,0,511);
|
||||
|
||||
/* check if the entry is already there */
|
||||
iRet = LLDnodePtr2First(self->iList);
|
||||
while(iRet != 0)
|
||||
{
|
||||
LLDnodeDataTo(self->iList,&sEntry);
|
||||
if(sEntry.pSock->sockid == pSock->sockid)
|
||||
{
|
||||
snprintf(buffer, sizeof buffer, "NetReadRegister twice %d type %d", pSock->sockid, eType);
|
||||
WriteToCommandLog("SYS>",buffer);
|
||||
return 1;
|
||||
}
|
||||
iRet = LLDnodePtr2Next(self->iList);
|
||||
}
|
||||
|
||||
LLDnodeAppendFrom(self->iList, &sItem);
|
||||
return 1;
|
||||
}
|
||||
@@ -265,7 +281,7 @@ extern int VerifyChannel(mkChannel *self); /* defined in network.c */
|
||||
"ERROR: insufficient privilege to invoke Interrupt",
|
||||
eError);
|
||||
}
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* split into command lines
|
||||
@@ -704,6 +720,9 @@ extern int VerifyChannel(mkChannel *self); /* defined in network.c */
|
||||
int conCount = 0;
|
||||
char num[50];
|
||||
IPair *options = NULL;
|
||||
char buffer[1024];
|
||||
int bufferLen;
|
||||
static int bufferFull=0;
|
||||
|
||||
self = (pNetRead)pData;
|
||||
assert(self);
|
||||
@@ -717,11 +736,13 @@ extern int VerifyChannel(mkChannel *self); /* defined in network.c */
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* build the select mask */
|
||||
FD_ZERO(&lMask);
|
||||
iRet = LLDnodePtr2First(self->iList);
|
||||
iCount = 0;
|
||||
buffer[0] = '\0';
|
||||
bufferLen = 0;
|
||||
while(iRet != 0)
|
||||
{
|
||||
LLDnodeDataTo(self->iList,&NItem);
|
||||
@@ -729,6 +750,15 @@ extern int VerifyChannel(mkChannel *self); /* defined in network.c */
|
||||
{
|
||||
break;
|
||||
}
|
||||
snprintf(num,sizeof num, "%d, type %d:", NItem.pSock->sockid, NItem.eType);
|
||||
if (bufferLen + strlen(num) < sizeof buffer) {
|
||||
strcpy(buffer + bufferLen, num);
|
||||
bufferLen += strlen(num);
|
||||
} else {
|
||||
if (bufferFull == 0) {
|
||||
bufferFull = 1;
|
||||
}
|
||||
}
|
||||
FD_SET(NItem.pSock->sockid,&lMask);
|
||||
if(NItem.pSock->sockid > iCount)
|
||||
{
|
||||
@@ -738,8 +768,14 @@ extern int VerifyChannel(mkChannel *self); /* defined in network.c */
|
||||
iRet = LLDnodePtr2Next(self->iList);
|
||||
}
|
||||
|
||||
snprintf(num,50,"%d", conCount);
|
||||
snprintf(num,sizeof num,"%d", conCount);
|
||||
IFSetOption(pSICSOptions,"ConnectionCount",num);
|
||||
IFSetOption(pSICSOptions,"ConMask",buffer);
|
||||
|
||||
if (bufferFull == 1) {
|
||||
bufferFull = 2;
|
||||
WriteToCommandLog("BUFFERFULL>",buffer);
|
||||
}
|
||||
|
||||
/* the select itself */
|
||||
tmo.tv_usec = self->iReadTimeout;
|
||||
|
||||
Reference in New Issue
Block a user