I think the func code L178-L239 has logical problems, look at the Basic 3-Way Handshake for Connection Synchronization:

TCP B can split <CTL=SYN,ACK> into <CTL=ACK> and <CTL=SYN>, then send them successively, so L194 will block the TCP B's <CTL=ACK>.
If you want TCP A only accept <CTL=SYN,ACK> from TCP B, L224-L236 is unnecessary.
I think the func code L178-L239 has logical problems, look at the Basic 3-Way Handshake for Connection Synchronization:
TCP B can split
<CTL=SYN,ACK>into<CTL=ACK>and<CTL=SYN>, then send them successively, so L194 will block the TCP B's<CTL=ACK>.If you want TCP A only accept
<CTL=SYN,ACK>from TCP B, L224-L236 is unnecessary.