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
diff --git a/Drivers/Braille/Virtual/braille.c b/Drivers/Braille/Virtual/braille.c
--- a/Drivers/Braille/Virtual/braille.c
+++ b/Drivers/Braille/Virtual/braille.c
@@ -122,11 +122,10 @@ static const OperationsEntry *operations;
 
 static int
 readNetworkSocket (int descriptor, void *buffer, int size) {
-  if (awaitSocketInput(descriptor, 0)) {
-    int count = recv(descriptor, buffer, size, 0);
+    int count = recv(descriptor, buffer, size, MSG_DONTWAIT);
     if (count != -1) return count;
-    LogSocketError("recv");
-  }
+    else if (errno != EAGAIN && errno != EWOULDBLOCK)
+      LogSocketError("recv");
 
   return -1;
 }
_______________________________________________
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

Reply via email to