From aab5693b4567934279ecaacad45226b95ae07914 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Wed, 5 Dec 2018 00:59:36 -0600 Subject: [PATCH] Fix for CA link disconnect detection dbCa's doLocked() method must run the callback even when the link is disconnected to allow alarms to be triggered by softDev support. Patch from Sebastian Marsching Also removes testToDo from rec/test/regressTest.c Fixes lp: #1798855 --- src/ioc/db/dbCa.c | 7 ++++++- src/std/rec/test/regressTest.c | 2 -- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/ioc/db/dbCa.c b/src/ioc/db/dbCa.c index 65a8327cf..843fbfc0c 100644 --- a/src/ioc/db/dbCa.c +++ b/src/ioc/db/dbCa.c @@ -703,7 +703,12 @@ static long doLocked(struct link *plink, dbLinkUserCallback rtn, void *priv) caLink *pca; long status; - pcaGetCheck + assert(plink); + if (plink->type != CA_LINK) return -1; + pca = (caLink *)plink->value.pv_link.pvt; + assert(pca); + epicsMutexMustLock(pca->lock); + assert(pca->plink); status = rtn(plink, priv); epicsMutexUnlock(pca->lock); return status; diff --git a/src/std/rec/test/regressTest.c b/src/std/rec/test/regressTest.c index 0c68f7ffb..661463984 100644 --- a/src/std/rec/test/regressTest.c +++ b/src/std/rec/test/regressTest.c @@ -133,10 +133,8 @@ void testCADisconn(void) startRegressTestIoc("badCaLink.db"); testdbPutFieldOk("ai:disconn.PROC", DBF_LONG, 1); - testTodoBegin("lp:1798855"); testdbGetFieldEqual("ai:disconn.SEVR", DBF_LONG, INVALID_ALARM); testdbGetFieldEqual("ai:disconn.STAT", DBF_LONG, LINK_ALARM); - testTodoEnd(); }