diff --git a/src/ioc/db/dbDbLink.c b/src/ioc/db/dbDbLink.c index 105799876..65d9853d9 100644 --- a/src/ioc/db/dbDbLink.c +++ b/src/ioc/db/dbDbLink.c @@ -36,6 +36,7 @@ #include "dbCommon.h" #include "dbConvertFast.h" #include "dbConvert.h" +#include "dbEvent.h" #include "db_field_log.h" #include "dbFldTypes.h" #include "dbLink.h" @@ -310,6 +311,16 @@ static long dbDbPutValue(struct link *plink, short dbrType, if (status) return status; + if ((ppv_link->pvlMask & pvlOptPP) == 0 && + dbIsValueField(paddr->pfldDes) && + paddr->pfldDes->process_passive) { + /* dbPut() doesn't post monitors on VAL when it's marked pp(TRUE) to + * prevent double monitor-events when the record processes, but since + * this link is NPP we should post one here ourselves. + */ + db_post_events(pdest, paddr->pfield, DBE_VALUE | DBE_LOG); + } + if (paddr->pfield == (void *) &pdest->proc || (ppv_link->pvlMask & pvlOptPP && pdest->scan == 0)) { /* if dbPutField caused asyn record to process */