In general, an implementation must be conservative in its sending behavior, and liberal in its receiving behavior.
TCP implementations will follow a general principle of robustness: be conservative in what you do, be liberal in what you accept from others.
Be liberal in what you accept, and conservative in what you send.