I spoke too soon. After fooling around a bunch and making many messages send in rapid succession i can get it into a state where the last received byte is always wrong : /.
I don't know what exactly is happening but once it happens then the last byte of my receive will always be wrong until system restart. So if i send 10 Bytes the 10th byte will be incorrect. So I guess the code above is not a proper fix, must be something amiss.
For now i am just going to go back to the method of transmitting a dummy buffer or 0's when i wish to only receive because i don't have the time to play with it any more right now : (
If someone finds a proper fix i would be glad to hear it!
-Jarrod