diff --git a/services/wsprd/app/app.go b/services/wsprd/app/app.go
index 92e436f..46eaa71 100644
--- a/services/wsprd/app/app.go
+++ b/services/wsprd/app/app.go
@@ -261,7 +261,6 @@
 func (c *Controller) Cleanup() {
 	vlog.VI(0).Info("Cleaning up controller")
 	c.Lock()
-	defer c.Unlock()
 
 	for _, request := range c.outstandingRequests {
 		if request.cancel != nil {
@@ -272,7 +271,15 @@
 		}
 	}
 
+	servers := []*server.Server{}
 	for _, server := range c.servers {
+		servers = append(servers, server)
+	}
+
+	c.Unlock()
+
+	// We must unlock before calling server.Stop otherwise it can deadlock.
+	for _, server := range servers {
 		server.Stop()
 	}
 
@@ -727,13 +734,6 @@
 		return nil, err
 	}
 
-	// TODO(nlacasse): This call.Finish() should not be necessary, since
-	// cancelling the context should cause the call to end.  However, for
-	// some reason, if we don't call Finish(), the server.Stop() hangs
-	// during cleanup.  (Although it does not hang if we do server.Stop()
-	// before cleanup.)
-	call.Finish()
-
 	blessings, _ := call.RemoteBlessings()
 	return blessings, nil
 }
diff --git a/services/wsprd/browspr/browspr.go b/services/wsprd/browspr/browspr.go
index 9fbb1a7..db88c62 100644
--- a/services/wsprd/browspr/browspr.go
+++ b/services/wsprd/browspr/browspr.go
@@ -92,16 +92,19 @@
 	}
 
 	b.mu.Lock()
+
 	if instance, ok := b.activeInstances[msg.InstanceId]; ok {
-		delete(b.activeInstances, msg.InstanceId)
 		// We must unlock the mutex before calling cleanunp, otherwise
 		// browspr deadlocks.
 		b.mu.Unlock()
 		instance.cleanup()
-	} else {
-		b.mu.Unlock()
+
+		b.mu.Lock()
+		delete(b.activeInstances, msg.InstanceId)
 	}
 
+	b.mu.Unlock()
+
 	return nil, nil
 }
 
