DFC locking for protocol zero only
This commit is contained in:
23
nread.c
23
nread.c
@ -294,15 +294,25 @@ static int NetReadRead(pNetRead self, pNetItem pItem)
|
|||||||
*pEnd = '\0';
|
*pEnd = '\0';
|
||||||
/* do we have something in hold ? */
|
/* do we have something in hold ? */
|
||||||
if (strlen(pItem->pHold) > 0) {
|
if (strlen(pItem->pHold) > 0) {
|
||||||
strlcat(pItem->pHold, pPtr,511);
|
strlcat(pItem->pHold, pPtr, 511);
|
||||||
iStat = CostaTop(pItem->pCon->pStack, pItem->pHold);
|
/* DFC locking for protocol zero only */
|
||||||
|
if (pItem->pCon->iProtocolID == 0 &&
|
||||||
|
CostaLocked(pItem->pCon->pStack))
|
||||||
|
iStat = 0;
|
||||||
|
else
|
||||||
|
iStat = CostaTop(pItem->pCon->pStack, pItem->pHold);
|
||||||
if (!iStat) {
|
if (!iStat) {
|
||||||
SCWrite(pItem->pCon, "ERROR: Busy", eError);
|
SCWrite(pItem->pCon, "ERROR: Busy", eError);
|
||||||
}
|
}
|
||||||
pItem->pHold[0] = '\0';
|
pItem->pHold[0] = '\0';
|
||||||
} else {
|
} else {
|
||||||
/* no, normal command */
|
/* no, normal command */
|
||||||
iStat = CostaTop(pItem->pCon->pStack, pPtr);
|
/* DFC locking for protocol zero only */
|
||||||
|
if (pItem->pCon->iProtocolID == 0 &&
|
||||||
|
CostaLocked(pItem->pCon->pStack))
|
||||||
|
iStat = 0;
|
||||||
|
else
|
||||||
|
iStat = CostaTop(pItem->pCon->pStack, pPtr);
|
||||||
if (!iStat) {
|
if (!iStat) {
|
||||||
SCWrite(pItem->pCon, "ERROR: Busy", eError);
|
SCWrite(pItem->pCon, "ERROR: Busy", eError);
|
||||||
}
|
}
|
||||||
@ -487,7 +497,12 @@ static int TelnetRead(pNetRead self, pNetItem pItem)
|
|||||||
break;
|
break;
|
||||||
case '\r':
|
case '\r':
|
||||||
case '\n':
|
case '\n':
|
||||||
iStat = CostaTop(pItem->pCon->pStack, pItem->pHold);
|
/* DFC locking for protocol zero only */
|
||||||
|
if (pItem->pCon->iProtocolID == 0 &&
|
||||||
|
CostaLocked(pItem->pCon->pStack))
|
||||||
|
iStat = 0;
|
||||||
|
else
|
||||||
|
iStat = CostaTop(pItem->pCon->pStack, pItem->pHold);
|
||||||
/* printf("%s\n",pItem->pHold); */
|
/* printf("%s\n",pItem->pHold); */
|
||||||
if (!iStat) {
|
if (!iStat) {
|
||||||
SCWrite(pItem->pCon, "ERROR: Busy", eError);
|
SCWrite(pItem->pCon, "ERROR: Busy", eError);
|
||||||
|
Reference in New Issue
Block a user