Assorted bug fixes

- If SctProcessNode ran into a timeout, its action data wa sdeleted. If data came
  later, this caused SICS to crash. This is now fixed
- sget leaked connections under certain circumstances
- Cosmetic fix to hipadaba.c
- yet another chnage to the TRICS file format in fourmess.c, now it prints magnetic field
  instead of the proton count
This commit is contained in:
2015-07-30 13:57:55 +02:00
parent 950cddc8e5
commit 64d44c2824
4 changed files with 38 additions and 5 deletions
+12 -1
View File
@@ -1620,8 +1620,19 @@ static int SctProcessCmd(pSICSOBJ ccmd, SConnection * con,
startTime = time(NULL);
DevQueue(c->devser, data, WritePRIO,
SctWriteHandler, SctTransactMatch, NULL, SctDataInfo);
while (data->busy == 1 && time(NULL) < startTime + 20) {
while (data->busy == 1){
TaskYield(pServ->pTasker);
if(time(NULL) >= startTime + 20) {
/*
if data would still come after such a long timeout, it
might end up in the next action: see comment in devser.c
*/
SCPrintf(con,eError,"ERROR: timeout processing node %s", par[0]->value.v.text);
DevRemoveAction(c->devser,data);
SctKillData(data);
return 0;
}
}
SctKillData(data);