git: 9front

Download patch

ref: 545506fbfe7f6558a29e0182a9ac7771a13f17ff
parent: bcb03bc63f07f6d06269113d7f1435d92ba09801
author: cinap_lenrek <cinap_lenrek@centraldogma>
date: Tue Sep 27 07:44:21 EDT 2011

factotum: fix flush handling for /mnt/factotum/needkey use

--- a/sys/src/cmd/auth/factotum/confirm.c
+++ b/sys/src/cmd/auth/factotum/confirm.c
@@ -21,8 +21,9 @@
 			*l = r->aux;
 			if(r->aux == nil)
 				cuselast = l;
-			closereq(r);
-			break;
+			r->aux = nil;
+			respond(r, "interrupted");
+			return;
 		}
 	}
 	logbufflush(&confbuf, r);
@@ -81,6 +82,7 @@
 			*l = r->aux;
 			if(r->aux == nil)
 				cuselast = l;
+			r->aux = nil;
 			break;
 		}
 	}
@@ -143,8 +145,9 @@
 			*l = r->aux;
 			if(r->aux == nil)
 				needlast = l;
-			closereq(r);
-			break;
+			r->aux = nil;
+			respond(r, "interrupted");
+			return;
 		}
 	}
 	logbufflush(&needkeybuf, r);
@@ -175,6 +178,7 @@
 			*l = r->aux;
 			if(r->aux == nil)
 				needlast = l;
+			r->aux = nil;
 			break;
 		}
 	}
--- a/sys/src/cmd/auth/factotum/log.c
+++ b/sys/src/cmd/auth/factotum/log.c
@@ -59,9 +59,9 @@
 	for(l=&lb->wait; *l; l=&(*l)->aux){
 		if(*l == r){
 			*l = r->aux;
-			r->aux = nil;
 			if(*l == nil)
 				lb->waitlast = l;
+			r->aux = nil;
 			respond(r, "interrupted");
 			break;
 		}
--