[tor-commits] [sandboxed-tor-browser/master] Bug #20804: Temporarily kludge around the async/UI issue.

yawning at torproject.org yawning at torproject.org
Mon Nov 28 02:59:17 UTC 2016


commit 22c94991236e6dff096e29fbb6e74c5a1d20c912
Author: Yawning Angel <yawning at schwanenlied.me>
Date:   Mon Nov 28 02:56:54 2016 +0000

    Bug #20804:  Temporarily kludge around the async/UI issue.
    
    The ui code's async stuff (and all the code that uses it) is kind of a
    kludgy mess, and is race codnition prone particularly when handling
    cancelation.
    
    Work around the issue for now, till I have time to fix it properly by
    increasing channel capacity a tad.
---
 src/cmd/sandboxed-tor-browser/internal/ui/async/async.go | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/cmd/sandboxed-tor-browser/internal/ui/async/async.go b/src/cmd/sandboxed-tor-browser/internal/ui/async/async.go
index 83bbcae..5a894d2 100644
--- a/src/cmd/sandboxed-tor-browser/internal/ui/async/async.go
+++ b/src/cmd/sandboxed-tor-browser/internal/ui/async/async.go
@@ -98,9 +98,13 @@ func (async *Async) Grab(client *grab.Client, url string, hzFn func(string)) []b
 
 // NewAsync creates a new Async structure.
 func NewAsync() *Async {
+	// XXX; Temporarily work around bug #20804, by oversizing
+	// the channels a bit.  Things end up getting stuck on channel
+	// writes because it's kludged together, this should ensure that
+	// the writes succeed.
 	async := new(Async)
-	async.Cancel = make(chan interface{})
-	async.Done = make(chan interface{})
+	async.Cancel = make(chan interface{}, 2)
+	async.Done = make(chan interface{}, 2)
 	async.ToUI = make(chan interface{})
 	return async
 }



More information about the tor-commits mailing list