--- //.git/fs/object/658757abed7be283e06bae3b1722fc2703334d74/tree//sys/src/cmd/stats.c +++ /sys/src/cmd/stats.c @@ -550,6 +550,20 @@ return i; } +char* +delmachine(Machine *m) +{ + free(m->shortname); + close(m->statsfd); + close(m->swapfd); + close(m->etherfd); + close(m->ifstatsfd); + close(m->batteryfd); + close(m->bitsybatfd); + close(m->tempfd); + return m->name; +} + int initmach(Machine *m, char *name) { @@ -717,11 +731,15 @@ { int n, i; uvlong a[nelem(m->devsysstat)]; - char buf[32]; + char buf[32], *machname; if(m->remote && (m->disable || setjmp(catchalarm))){ - if (m->disable++ >= 5) + if (m->disable++ >= 5){ m->disable = 0; /* give it another chance */ + machname = delmachine(m); + initmach(m, machname); + free(machname); + } memmove(m->devsysstat, m->prevsysstat, sizeof m->devsysstat); memmove(m->netetherstats, m->prevetherstats, sizeof m->netetherstats); return;