----- Original Message ----- > Hi, > > for me the Virtual driver (vr) doesn't work, reproducer: > > $ brltty -b vr -d server:127.0.0.1 -x a2 -A auth=none > $ telnet 127.0.0.1 35752 > cells 20 > > And nothing happened. It seems the 'vr' driver thinks there is > no data on the socket received, i.e. the awaitSocketInput check in > readNetworkSocket never succeed. > > I didn't debug the complex underlying machinery, but the attached > patch that bypassed it and used MSG_DONTWAIT recv flag (which is > available since kernel 2.2) works for me and the Virtual driver > started to work again. I tested it on Fedora 23 (kernel 4.4.7) > > thanks & regards > > Jaroslav >
I bisected the problem to the following commit: https://github.com/brltty/brltty/commit/cd62215b643b486c93fb28c3fe02e3727cdf3f91 and simply reverting the commit for the asyncAwaitCondtition resolved the problem for me regards Jaroslav
diff --git a/Programs/async_wait.c b/Programs/async_wait.c index 86e4135..b4f2cec 100644 --- a/Programs/async_wait.c +++ b/Programs/async_wait.c @@ -142,17 +142,21 @@ awaitAction (long int timeout) { int asyncAwaitCondition (int timeout, AsyncConditionTester *testCondition, void *data) { + long int elapsed = 0; TimePeriod period; - startTimePeriod(&period, timeout); - - while (!(testCondition && testCondition(data))) { - long int elapsed; - if (afterTimePeriod(&period, &elapsed)) return 0; + startTimePeriod(&period, timeout); + do { awaitAction(timeout - elapsed); - } - return 1; + if (testCondition) { + if (testCondition(data)) { + return 1; + } + } + } while (!afterTimePeriod(&period, &elapsed)); + + return 0; } void
_______________________________________________ This message was sent via the BRLTTY mailing list. To post a message, send an e-mail to: BRLTTY@mielke.cc For general information, go to: http://mielke.cc/mailman/listinfo/brltty