Smarter protocol detection - fail fast if we didn't match instead of just waiting for more data (which may never come)