Index: library/xotcl/library/comm/Connection.xotcl =================================================================== diff -u -N -rf3b7952aabc9e4f9079febd1f5b7f5fb833fd50c -r271cf04e90fb37b157c8da0bdee01b3bf99f4e89 --- library/xotcl/library/comm/Connection.xotcl (.../Connection.xotcl) (revision f3b7952aabc9e4f9079febd1f5b7f5fb833fd50c) +++ library/xotcl/library/comm/Connection.xotcl (.../Connection.xotcl) (revision 271cf04e90fb37b157c8da0bdee01b3bf99f4e89) @@ -156,14 +156,21 @@ return $n } Connection instproc read {} { - #my showCall - my instvar socket - if {[catch {set result [::read $socket [::fconfigure $socket -buffersize]]} msg]} { + # my showCall + my instvar socket + # + # Make sure that the platform file descriptor underneath Tcl's + # channel abstraction (e.g., the unix socket) is, in fact, set to + # its non-blocking mode. Currently, there is a regression in Tcl + # 8.6b2 for channels created using [socket -async]. See Tcl bug + # tracker, artifact #3401422. + # + ::fconfigure $socket -blocking 0 + if {[catch {set result [::read $socket [::fconfigure $socket -buffersize]]} msg]} { my set error $msg return "" } - #my showMsg Done - return $result + return $result } Connection instproc readSize {length} { if {[catch {set result [::read [my socket] $length]} msg]} {