diff --git a/src/seq/seq_if.c b/src/seq/seq_if.c index 894b53185738f8a1229c2fd8f01c6916be887522..6e17a1e50bbe83ab89c2da378314d17145047a78 100644 --- a/src/seq/seq_if.c +++ b/src/seq/seq_if.c @@ -120,6 +120,12 @@ epicsShareFunc pvStat epicsShareAPI seq_pvGet(SS_ID ss, VAR_ID varId, enum compT switch (epicsEventTryWait(getSem)) { case epicsEventWaitOK: + if (ss->getReq[varId] != NULL) + { + /* previous request timed out but user + did not call pvGetComplete */ + ss->getReq[varId] = NULL; + } status = check_connected(dbch, meta); if (status) return epicsEventSignal(getSem), status; break; @@ -392,6 +398,12 @@ epicsShareFunc pvStat epicsShareAPI seq_pvPut(SS_ID ss, VAR_ID varId, enum compT switch (epicsEventTryWait(putSem)) { case epicsEventWaitOK: + if (ss->putReq[varId] != NULL) + { + /* previous request timed out but user + did not call pvPutComplete */ + ss->putReq[varId] = NULL; + } break; case epicsEventWaitTimeout: meta->status = pvStatERROR;