If a packet after the initialization would come with ACK flag set
but a ACK value of 0, the last_ack tracking could get confused. Fix
this by not checking for 0 but instead checking if the ACK flag
has been seen.
Bug: #4549.
(cherry picked from commit
1f43e1477f3c5781381e75f4bed918cbc6c18dfd)
static inline bool STREAM_LASTACK_GT_BASESEQ(const TcpStream *stream)
{
/* last ack not yet initialized */
- if (STREAM_BASE_OFFSET(stream) == 0 && stream->last_ack == 0)
+ if (STREAM_BASE_OFFSET(stream) == 0 && (stream->tcp_flags & TH_ACK) == 0)
return false;
if (SEQ_GT(stream->last_ack, stream->base_seq))
return true;