diff --git a/src/client/main.c b/src/client/main.c
index 0f7d525c4b769e315b6ed3ac39e3277f137b1a09..83c66e27cba02db724b19c983d9038b2033d2d2c 100644
--- a/src/client/main.c
+++ b/src/client/main.c
@@ -816,10 +816,10 @@ int main(int argc, char *argv[])
 		if( j > 1 ) {
 			printf("%i items dispensed\n", j);
 		}
+		Dispense_ShowUser(sock, gsUserName);
 		close(sock);
-	}
 
-	Dispense_ShowUser(sock, gsUserName);
+	}
 
 	return ret;
 }
diff --git a/src/server/dispense.c b/src/server/dispense.c
index c3426fd718a59104d00fa94869281f989cb77313..15962a3e36f3544a97d7be6d0c120a08c5fd19be 100644
--- a/src/server/dispense.c
+++ b/src/server/dispense.c
@@ -120,6 +120,10 @@ int DispenseGive(int ActualUser, int SrcUser, int DestUser, int Ammount, const c
 	char	*actualUsername;
 	char	*srcName, *dstName;
 	
+	// HACK: Naming a slot "dead" disables it (catch for snack)
+	if( strcmp(ReasonGiven, "dead") == 0 )
+		return 1;
+	
 	if( Ammount < 0 )	return 1;	// Um... negative give? Not on my watch!
 	
 	ret = _Transfer( SrcUser, DestUser, Ammount, ReasonGiven );
diff --git a/src/server/server.c b/src/server/server.c
index 483806ab41f7d8d032fd50cdfad2282f28a98429..9ee4ec7f6349d81ad595b5209d0fe8dfbe31f6cd 100644
--- a/src/server/server.c
+++ b/src/server/server.c
@@ -164,9 +164,15 @@ void Server_Start(void)
 		}
 		// In child
 		// - Sort out stdin/stdout
+		#if 0
 		dup2( open("/dev/null", O_RDONLY, 0644), STDIN_FILENO );
 		dup2( open(gsServer_LogFile, O_CREAT|O_APPEND, 0644), STDOUT_FILENO );
 		dup2( open(gsServer_ErrorLog, O_CREAT|O_APPEND, 0644), STDERR_FILENO );
+		#else
+		freopen("/dev/null", "r", stdin);
+		freopen(gsServer_LogFile, "a", stdout);
+		freopen(gsServer_ErrorLog, "a", stderr);
+		#endif
 	}
 
 	// Start the helper thread