avoid double lock (lucho ionkov)
diff --git a/src/lib9p/req.c b/src/lib9p/req.c index 907db00..b958e19 100644 --- a/src/lib9p/req.c +++ b/src/lib9p/req.c
@@ -84,8 +84,8 @@ closefid(r->afid); if(r->oldreq) closereq(r->oldreq); - for(i=0; i<r->nflush; i++) - respond(r->flush[i], nil); + if(r->nflush) + fprint(2, "closereq: flushes remaining\n"); free(r->flush); switch(r->ifcall.type){ case Tstat:
diff --git a/src/lib9p/srv.c b/src/lib9p/srv.c index 29b1ac2..e75600d 100644 --- a/src/lib9p/srv.c +++ b/src/lib9p/srv.c
@@ -856,8 +856,10 @@ free: qlock(&r->lk); /* no one will add flushes now */ - for(i=0; i<r->nflush; i++) + for(i=0; i<r->nflush; i++){ + r->flush[i]->oldreq = nil; /* so it doesn't try to lock us! */ respond(r->flush[i], nil); + } free(r->flush); r->nflush = 0; r->flush = nil;