shithub: riscv

Download patch

ref: b8d741d34b4130afabe5467a0d9e0e3d57e6c765
parent: bb3a16f07f32f7eabd51036b3c3ec1dc81a1d3fe
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;
 		}
--