Affects Version/s: None
Fix Version/s: 1.0.0+dev
As you may know, the POSIX semantics for sockets/streams is really (really) shitty.
One of its infamous case is the semantics for end of streams: no error code may be returned when a stream has ended. The "correct" way to detect an EOS on a socket is to check whether a read returned 0...
Our decoding infrastructure, on the other hand, relies heavily on exceptions, in particular for detecting end of streams. In
LS-548, because the AAC decoder has a read buffer, we did not see the end of track: last Unix.read was returning 0 and we simply returned inifitely many time the last string in the buffer..
Although this is fixed for
LS-548, I am filling this task in order to have a look at the code later. At every place where there is a Unix.read, we should think of what happends if this read returns 0 char. On a more general level, we may want to implement our own Utils.read and place there an exception raised when the read returned 0...