A very, very frustrating bug was fixed. Basically we were sending a packet that wasn't the correct length, we now wait for the next block of data to arrive to re-construct it.