From 77df4005ecf87c11932164e97f538f89b0d0f8f5 Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Wed, 28 Dec 2011 06:55:07 +0100 Subject: [PATCH] Brm::Lasic: Work around kernel icanon race condition --- perl/Brm/Lasic.pm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/perl/Brm/Lasic.pm b/perl/Brm/Lasic.pm index 83b9c40..c38426a 100644 --- a/perl/Brm/Lasic.pm +++ b/perl/Brm/Lasic.pm @@ -90,6 +90,7 @@ sub BUILD { $self->port->parity("none"); $self->port->stopbits(1); $self->port->handshake("none"); + $self->port->stty_icanon(0); $self->port->write_settings(); $self->port->read_const_time(500); # Yes, output record separator != input record separator! @@ -177,9 +178,10 @@ sub msg { print $fd join(' ', @args); my $msg; do { - $msg = <$fd>; + # $msg = <$fd> tends to induce writes stuck in the kernel?! + $msg = $self->port()->lookfor(1); } while (not $msg); - # print "(rep: $msg)\n"; + # print "\t(rep: $msg)\n"; } =back