diff --git a/remob.c b/remob.c index 98d4ecdc..d8240267 100644 --- a/remob.c +++ b/remob.c @@ -261,9 +261,10 @@ static int RemServerTask(void *data) { if (remserver->forwardMessages) { /* forward all other messages */ - pCon = SCLoad(&remserver->conn); - if (pCon) { + if (SCStoreConnected(remserver->conn)) { + pCon = SCStorePush(remserver->conn); RemCopy(rc, pCon); + SCStorePop(remserver->conn); } } } @@ -397,7 +398,7 @@ static float RemobGetValue(void *pData, SConnection *pCon) { assert(remob); - SCSave(&remserver->conn, pCon); + remserver->conn = SCSave(pCon, remserver->conn); none = -1.25e6; value= none; snprintf(buf, sizeof(buf), "<%s", remob->name); @@ -448,7 +449,7 @@ static int RemobStatus(void *pData, SConnection *pCon) { assert(remob); - SCSave(&remob->server->conn, pCon); + remob->server->conn = SCSave(pCon, remob->server->conn); return remob->status; } /*---------------------------------------------------------------------------*/ @@ -467,7 +468,7 @@ static long RemobRun(void *self, SConnection *pCon, float fNew) { int nChan; remserver = remob->server; - SCSave(&remserver->conn, pCon); + remserver->conn = SCSave(pCon, remserver->conn); assert(remob); assert(pCon); @@ -563,7 +564,7 @@ int RemobAction(SConnection *pCon, SicsInterp *pSics, void *pData, nChan = (rights <= usUser); rc = &remserver->rc[nChan]; if (rights >= usUser) { - SCSave(&remserver->conn, pCon); + remserver->conn = SCSave(pCon, remserver->conn); } if (argc == 1) { iRet = RemTransact(remserver, nChan, pCon, remob->name, ">", NULL); @@ -655,7 +656,7 @@ int RemServerAction(SConnection *pCon, SicsInterp *pSics, void *pData, nChan = (rights <= usUser); rc = &remserver->rc[nChan]; if (nChan) { - SCSave(&remserver->conn, pCon); + remserver->conn = SCSave(pCon, remserver->conn); } if (argc == 1) { serverport = IFindOption(pSICSOptions,"ServerPort"); @@ -733,6 +734,7 @@ static void RemServerKill(void *self) { DeleteDescriptor(remserver->desc); if (remserver->name) free(remserver->name); if (remserver->host) free(remserver->host); + SCStoreFree(remserver->conn); free(remserver); } /*-----------------------------------------------------------------------*/ @@ -833,6 +835,7 @@ static RemServer *RemServerInit(char *name, char *host, int port) { rc->timeout = 0; } remserver->objList = NULL; + remserver->conn = NULL; if (!remserver->name || !remserver->host || !remserver->port) {