Arduino can only read from serial one character at a time

The code looks okay at first glance. I'm suspicious about your sending instead. Are you sure you are sending end markers in both cases, for example?