mirror of
https://github.com/xcat2/xNBA.git
synced 2024-12-25 04:31:45 +00:00
[tcp] Avoid setting PSH flag when SYN flag is set
Some firewall devices seem to regard SYN,PSH as an invalid flag combination and reject the packet. Fix by setting PSH only if SYN is not set. Reported-by: DSE Incorporated <dseinc@gmail.com>
This commit is contained in:
parent
4397a2a4ca
commit
3ed468e0c5
@ -471,6 +471,8 @@ static int tcp_xmit ( struct tcp_connection *tcp, int force_send ) {
|
||||
tsopt->tsopt.tsval = ntohl ( currticks() );
|
||||
tsopt->tsopt.tsecr = ntohl ( tcp->ts_recent );
|
||||
}
|
||||
if ( ! ( flags & TCP_SYN ) )
|
||||
flags |= TCP_PSH;
|
||||
tcphdr = iob_push ( iobuf, sizeof ( *tcphdr ) );
|
||||
memset ( tcphdr, 0, sizeof ( *tcphdr ) );
|
||||
tcphdr->src = tcp->local_port;
|
||||
@ -478,7 +480,7 @@ static int tcp_xmit ( struct tcp_connection *tcp, int force_send ) {
|
||||
tcphdr->seq = htonl ( tcp->snd_seq );
|
||||
tcphdr->ack = htonl ( tcp->rcv_ack );
|
||||
tcphdr->hlen = ( ( payload - iobuf->data ) << 2 );
|
||||
tcphdr->flags = ( flags | TCP_PSH );
|
||||
tcphdr->flags = flags;
|
||||
tcphdr->win = htons ( tcp->rcv_win );
|
||||
tcphdr->csum = tcpip_chksum ( iobuf->data, iob_len ( iobuf ) );
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user