From d738cb36b07004882355f761c14b13db18810c1d Mon Sep 17 00:00:00 2001 From: Douglas Clowes Date: Wed, 28 Mar 2007 12:19:10 +1000 Subject: [PATCH] Make command queue addition depend on connection protocol. Only reject for protocol zero. r1732 | dcl | 2007-03-28 12:19:10 +1000 (Wed, 28 Mar 2007) | 2 lines --- costa.c | 9 +++++++++ costa.h | 1 + nread.c | 21 ++++++++++++++++++--- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/costa.c b/costa.c index 44f7cfd8..bd2b1f8e 100644 --- a/costa.c +++ b/costa.c @@ -113,10 +113,12 @@ assert(self); /* check for lock */ +#if 0 /* DFC */ if(self->iLock) { return 0; } +#endif /* check Size */ if(self->iCount >= self->iMaxSize) { @@ -146,10 +148,12 @@ assert(self); /* check for lock */ +#if 0 /* DFC */ if(self->iLock) { return 0; } +#endif /* do not want 0 commands */ if(strlen(pCommand) < 1) @@ -195,4 +199,9 @@ { self->iLock = 0; } +/*--------------------------------------------------------------------------*/ + int CostaLocked(pCosta self) + { + return self->iLock; + } diff --git a/costa.h b/costa.h index 47bf3329..114d86b4 100644 --- a/costa.h +++ b/costa.h @@ -25,5 +25,6 @@ /*----------------------------------------------------------------------*/ void CostaLock(pCosta self); void CostaUnlock(pCosta self); + int CostaLocked(pCosta self); #endif diff --git a/nread.c b/nread.c index 28c23669..1364002a 100644 --- a/nread.c +++ b/nread.c @@ -292,7 +292,12 @@ extern int VerifyChannel(mkChannel *self); /* defined in network.c */ if(strlen(pItem->pHold) > 0) { strcat(pItem->pHold,pPtr); - 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) { SCWrite(pItem->pCon,"ERROR: Busy",eError); @@ -302,7 +307,12 @@ extern int VerifyChannel(mkChannel *self); /* defined in network.c */ else { /* 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) { SCWrite(pItem->pCon,"ERROR: Busy",eError); @@ -515,7 +525,12 @@ extern int VerifyChannel(mkChannel *self); /* defined in network.c */ break; case '\r': 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); */ if(!iStat) {