chiark / gitweb /
Fix a race between track startup and scratching. Basically if the
scratch was too soon then SM_CANCEL would arrive at the speaker before
SM_PLAY, leaving the speaker thinking this was a queue removal rather
than a scratch, and therefore not sending a response.
The fix is to respond to _all_ SM_CANCELs whatever the speaker thinks
they are, and disorderd to always check the ID against the playing
track. The responses are distinguished, but the server no longer uses
this information.