Browse Source

Bugfix: SGW: Discard work from log only by expiry, so post-startup hardware errors are truly only hardware errors

Luke Dashjr 12 years ago
parent
commit
548a2b5ac8
1 changed files with 4 additions and 1 deletions
  1. 4 1
      driver-getwork.c

+ 4 - 1
driver-getwork.c

@@ -43,13 +43,16 @@ void prune_worklog()
 {
 {
 	struct getwork_client *client, *tmp;
 	struct getwork_client *client, *tmp;
 	struct work *work, *tmp2;
 	struct work *work, *tmp2;
+	struct timeval tv_now;
+	
+	timer_set_now(&tv_now);
 	
 	
 	mutex_lock(&getwork_clients_mutex);
 	mutex_lock(&getwork_clients_mutex);
 	HASH_ITER(hh, getwork_clients, client, tmp)
 	HASH_ITER(hh, getwork_clients, client, tmp)
 	{
 	{
 		HASH_ITER(hh, client->work, work, tmp2)
 		HASH_ITER(hh, client->work, work, tmp2)
 		{
 		{
-			if (!stale_work(work, true))
+			if (timer_elapsed(&work->tv_work_start, &tv_now) <= opt_expiry)
 				break;
 				break;
 			HASH_DEL(client->work, work);
 			HASH_DEL(client->work, work);
 			free_work(work);
 			free_work(work);