@ -1797,14 +1797,14 @@ static inline bool StateSynSentValidateTimestamp(TcpSession *ssn, Packet *p)
if ( receiver_stream - > last_ts ! = 0 & & ts_echo ! = 0 & &
ts_echo ! = receiver_stream - > last_ts )
{
SCLogDebug ( " % " PRIu64 " : ssn %p: BAD TSECR echo %u recv %u " , p - > pcap_cnt , ssn , ts_echo ,
receiver_stream- > last_ts ) ;
SCLogDebug ( " % " PRIu64 " : ssn %p: BAD TSECR echo %u recv %u " , PcapPacketCntGet ( p ) , ssn ,
ts_echo, receiver_stream- > last_ts ) ;
return false ;
}
} else {
if ( receiver_stream - > last_ts = = 0 & & ts_echo ! = 0 ) {
SCLogDebug ( " % " PRIu64 " : ssn %p: BAD TSECR echo %u recv %u " , p - > pcap_cnt , ssn , ts_echo ,
receiver_stream- > last_ts ) ;
SCLogDebug ( " % " PRIu64 " : ssn %p: BAD TSECR echo %u recv %u " , PcapPacketCntGet ( p ) , ssn ,
ts_echo, receiver_stream- > last_ts ) ;
return false ;
}
}
@ -1966,7 +1966,8 @@ static int StreamTcp3whsStoreSyn(TcpSession *ssn, Packet *p)
if ( ssn - > queue_len > 0 & & ssn - > queue_len = = stream_config . max_syn_queued ) {
DEBUG_VALIDATE_BUG_ON ( ssn - > queue = = NULL ) ;
SCLogDebug ( " % " PRIu64 " : ssn %p: =~ SYN queue limit reached, rotate " , p - > pcap_cnt , ssn ) ;
SCLogDebug ( " % " PRIu64 " : ssn %p: =~ SYN queue limit reached, rotate " , PcapPacketCntGet ( p ) ,
ssn ) ;
StreamTcpSetEvent ( p , STREAM_3WHS_SYN_FLOOD ) ;
/* add to the list, evicting the oldest entry */
@ -1995,8 +1996,8 @@ static int StreamTcp3whsStoreSyn(TcpSession *ssn, Packet *p)
ssn - > queue = q ;
}
ssn - > queue_len + + ;
SCLogDebug ( " % " PRIu64 " : ssn %p: =~ SYN with SEQ %u added (queue_len %u) " , p - > pcap_cnt , ssn ,
q- > seq , ssn - > queue_len ) ;
SCLogDebug ( " % " PRIu64 " : ssn %p: =~ SYN with SEQ %u added (queue_len %u) " , PcapPacketCntGet ( p ) ,
ssn, q- > seq , ssn - > queue_len ) ;
return 0 ;
}
@ -2050,7 +2051,8 @@ static inline bool StateSynSentCheckSynAck3Whs(TcpSession *ssn, Packet *p, const
TcpStateQueue search ;
TcpStateQueueInitFromPktSynAck ( p , & search ) ;
SCLogDebug ( " % " PRIu64 " : ssn %p: SYN/ACK looking for SEQ %u " , p - > pcap_cnt , ssn , search . seq ) ;
SCLogDebug ( " % " PRIu64 " : ssn %p: SYN/ACK looking for SEQ %u " , PcapPacketCntGet ( p ) , ssn ,
search . seq ) ;
const TcpStateQueue * q =
StreamTcp3whsFindSyn ( ssn , & search , NULL , stream_config . liberal_timestamps ) ;
@ -2100,7 +2102,8 @@ static inline bool StateSynSentCheckSynAckTFO(TcpSession *ssn, Packet *p, const
TcpStateQueue search ;
TcpStateQueueInitFromPktSynAck ( p , & search ) ;
SCLogDebug ( " % " PRIu64 " : ssn %p: SYN/ACK looking for SEQ %u " , p - > pcap_cnt , ssn , search . seq ) ;
SCLogDebug ( " % " PRIu64 " : ssn %p: SYN/ACK looking for SEQ %u " , PcapPacketCntGet ( p ) , ssn ,
search . seq ) ;
const TcpStateQueue * q =
StreamTcp3whsFindSyn ( ssn , & search , NULL , stream_config . liberal_timestamps ) ;
@ -2145,7 +2148,7 @@ static int StreamTcpPacketStateSynSent(
/* common case: SYN/ACK from server to client */
if ( ( tcph - > th_flags & ( TH_SYN | TH_ACK ) ) = = ( TH_SYN | TH_ACK ) & & PKT_IS_TOCLIENT ( p ) ) {
SCLogDebug ( " % " PRIu64 " : ssn %p: SYN/ACK on SYN_SENT state for packet % " PRIu64 ,
p - > pcap_cnt , ssn , p - > pcap_cnt ) ;
PcapPacketCntGet ( p ) , ssn , PcapPacketCntGet ( p ) ) ;
/* if timestamps are liberal, allow a SYN/ACK with TS even if the SYN
* had none ( violates RFC 7323 , see bug # 4702 ) . */
const bool ts_mismatch =
@ -2179,7 +2182,8 @@ static int StreamTcpPacketStateSynSent(
StreamTcp3wsFreeQueue ( ssn ) ;
StreamTcp3whsSynAckUpdate ( ssn , p , /* no queue override */ NULL ) ;
SCLogDebug ( " % " PRIu64 " : ssn %p: SYN/ACK on SYN_SENT state: accepted " , p - > pcap_cnt , ssn ) ;
SCLogDebug ( " % " PRIu64 " : ssn %p: SYN/ACK on SYN_SENT state: accepted " , PcapPacketCntGet ( p ) ,
ssn ) ;
return 0 ;
} else if ( ( tcph - > th_flags & ( TH_SYN | TH_ACK ) ) = = ( TH_SYN | TH_ACK ) & & PKT_IS_TOSERVER ( p ) ) {
@ -2383,7 +2387,7 @@ static int StreamTcpPacketStateSynSent(
StreamTcp3whsStoreSyn ( ssn , p ) ;
SCLogDebug ( " ssn %p: Retransmitted SYN. Updating ssn from packet % " PRIu64
" . Stored previous state " ,
ssn , p - > pcap_cnt ) ;
ssn , PcapPacketCntGet ( p ) ) ;
}
StreamTcp3whsStoreSynApplyToSsn ( ssn , & syn_pkt ) ;
}
@ -3237,7 +3241,7 @@ static bool StreamTcpPacketIsZeroWindowProbeAck(const TcpSession *ssn, const Pac
return false ;
if ( TCP_GET_RAW_ACK ( tcph ) ! = rcv - > last_ack )
return false ;
SCLogDebug ( " ssn %p: packet % " PRIu64 " is a Zero Window Probe ACK " , ssn , p - > pcap_cnt ) ;
SCLogDebug ( " ssn %p: packet % " PRIu64 " is a Zero Window Probe ACK " , ssn , PcapPacketCntGet ( p ) ) ;
return true ;
}
@ -3275,8 +3279,8 @@ static bool StreamTcpPacketIsDupAck(const TcpSession *ssn, const Packet *p)
return false ;
SCLogDebug ( " ssn %p: packet:% " PRIu64 " seq:%u ack:%u win:%u snd %u:%u:%u rcv %u:%u:%u " , ssn ,
p - > pcap_cnt , TCP_GET_RAW_SEQ ( tcph ) , TCP_GET_RAW_ACK ( tcph ) , pkt_win , snd - > next_seq ,
snd - > last_ack, rcv - > window , snd - > next_seq , rcv - > last_ack , rcv - > window ) ;
PcapPacketCntGet ( p ) , TCP_GET_RAW_SEQ ( tcph ) , TCP_GET_RAW_ACK ( tcph ) , pkt_win ,
snd - > next_seq, snd - > last_ack, rcv - > window , snd - > next_seq , rcv - > last_ack , rcv - > window ) ;
return true ;
}
@ -5270,8 +5274,9 @@ static void StreamTcpPacketCheckPostRst(TcpSession *ssn, Packet *p)
}
if ( ostream - > flags & STREAMTCP_STREAM_FLAG_RST_RECV ) {
SCLogDebug ( " regular packet % " PRIu64 " from same sender as "
" the previous RST. Looks like it injected! " , p - > pcap_cnt ) ;
SCLogDebug ( " regular packet % " PRIu64 " from same sender as "
" the previous RST. Looks like it injected! " ,
PcapPacketCntGet ( p ) ) ;
ostream - > flags & = ~ STREAMTCP_STREAM_FLAG_RST_RECV ;
ssn - > flags & = ~ STREAMTCP_FLAG_CLOSED_BY_RST ;
StreamTcpSetEvent ( p , STREAM_SUSPECTED_RST_INJECT ) ;
@ -5314,7 +5319,7 @@ static int StreamTcpPacketIsKeepAlive(TcpSession *ssn, Packet *p)
const uint32_t seq = TCP_GET_RAW_SEQ ( tcph ) ;
const uint32_t ack = TCP_GET_RAW_ACK ( tcph ) ;
if ( ack = = ostream - > last_ack & & seq = = ( stream - > next_seq - 1 ) ) {
SCLogDebug ( " packet is TCP keep-alive: % " PRIu64 , p - > pcap_cnt ) ;
SCLogDebug ( " packet is TCP keep-alive: % " PRIu64 , PcapPacketCntGet ( p ) ) ;
stream - > flags | = STREAMTCP_STREAM_FLAG_KEEPALIVE ;
STREAM_PKT_FLAG_SET ( p , STREAM_PKT_FLAG_KEEPALIVE ) ;
return 1 ;
@ -5363,7 +5368,7 @@ static int StreamTcpPacketIsKeepAliveACK(TcpSession *ssn, Packet *p)
return 0 ;
if ( ( ostream - > flags & STREAMTCP_STREAM_FLAG_KEEPALIVE ) & & ack = = ostream - > last_ack & & seq = = stream - > next_seq ) {
SCLogDebug ( " packet is TCP keep-aliveACK: % " PRIu64 , p - > pcap_cnt ) ;
SCLogDebug ( " packet is TCP keep-aliveACK: % " PRIu64 , PcapPacketCntGet ( p ) ) ;
ostream - > flags & = ~ STREAMTCP_STREAM_FLAG_KEEPALIVE ;
STREAM_PKT_FLAG_SET ( p , STREAM_PKT_FLAG_KEEPALIVEACK ) ;
return 1 ;
@ -5435,7 +5440,7 @@ static int StreamTcpPacketIsWindowUpdate(TcpSession *ssn, Packet *p)
return 0 ;
if ( ack = = ostream - > last_ack & & seq = = stream - > next_seq ) {
SCLogDebug ( " packet is TCP window update: % " PRIu64 , p - > pcap_cnt ) ;
SCLogDebug ( " packet is TCP window update: % " PRIu64 , PcapPacketCntGet ( p ) ) ;
STREAM_PKT_FLAG_SET ( p , STREAM_PKT_FLAG_WINDOWUPDATE ) ;
return 1 ;
}
@ -5474,8 +5479,8 @@ static int StreamTcpPacketIsFinShutdownAck(TcpSession *ssn, Packet *p)
seq = TCP_GET_RAW_SEQ ( tcph ) ;
ack = TCP_GET_RAW_ACK ( tcph ) ;
SCLogDebug ( " % " PRIu64 " , seq %u ack %u stream->next_seq %u ostream->next_seq %u " ,
p - > pcap_cnt , seq , ack , stream - > next_seq , ostream - > next_seq ) ;
SCLogDebug ( " % " PRIu64 " , seq %u ack %u stream->next_seq %u ostream->next_seq %u " ,
PcapPacketCntGet ( p ) , seq , ack , stream - > next_seq , ostream - > next_seq ) ;
if ( SEQ_EQ ( stream - > next_seq + 1 , seq ) & & SEQ_EQ ( ack , ostream - > next_seq + 1 ) ) {
return 1 ;
@ -5535,13 +5540,15 @@ static int StreamTcpPacketIsBadWindowUpdate(TcpSession *ssn, Packet *p)
SEQ_GT ( ack , ostream - > next_seq ) & &
SEQ_GT ( seq , stream - > next_seq ) )
{
SCLogDebug ( " % " PRIu64 " , pkt_win %u, stream win %u, diff %u, dsize %u " ,
p - > pcap_cnt , pkt_win , ostream - > window , diff , p - > payload_len ) ;
SCLogDebug ( " % " PRIu64 " , pkt_win %u, stream win %u " ,
p - > pcap_cnt , pkt_win , ostream - > window ) ;
SCLogDebug ( " % " PRIu64 " , seq %u ack %u ostream->next_seq %u ostream->last_ack %u, ostream->next_win %u, diff %u (%u) " ,
p - > pcap_cnt , seq , ack , ostream - > next_seq , ostream - > last_ack , ostream - > next_win ,
ostream - > next_seq - ostream - > last_ack , stream - > next_seq - stream - > last_ack ) ;
SCLogDebug ( " % " PRIu64 " , pkt_win %u, stream win %u, diff %u, dsize %u " ,
PcapPacketCntGet ( p ) , pkt_win , ostream - > window , diff , p - > payload_len ) ;
SCLogDebug ( " % " PRIu64 " , pkt_win %u, stream win %u " , PcapPacketCntGet ( p ) , pkt_win ,
ostream - > window ) ;
SCLogDebug ( " % " PRIu64 " , seq %u ack %u ostream->next_seq %u ostream->last_ack %u, "
" ostream->next_win %u, diff %u (%u) " ,
PcapPacketCntGet ( p ) , seq , ack , ostream - > next_seq , ostream - > last_ack ,
ostream - > next_win , ostream - > next_seq - ostream - > last_ack ,
stream - > next_seq - stream - > last_ack ) ;
/* get the expected window shrinking from looking at ack vs last_ack.
* Observed a lot of just a little overrunning that value . So added some
@ -5673,7 +5680,7 @@ int StreamTcpPacket (ThreadVars *tv, Packet *p, StreamTcpThread *stt,
DEBUG_ASSERT_FLOW_LOCKED ( p - > flow ) ;
SCLogDebug ( " p->pcap_cnt %" PRIu64 , p - > pcap_cnt ) ;
SCLogDebug ( " PcapPacketCntGet(p) %" PRIu64 , PcapPacketCntGet ( p ) ) ;
TcpSession * ssn = ( TcpSession * ) p - > flow - > protoctx ;
const TCPHdr * tcph = PacketGetTCP ( p ) ;
@ -5898,7 +5905,7 @@ static inline int StreamTcpValidateChecksum(Packet *p)
ret = 0 ;
if ( p - > livedev ) {
( void ) SC_ATOMIC_ADD ( p - > livedev - > invalid_checksums , 1 ) ;
} else if ( p - > pcap_cnt ) {
} else if ( PcapPacketCntGet ( p ) ) {
PcapIncreaseInvalidChecksum ( ) ;
}
}
@ -5917,14 +5924,15 @@ static int TcpSessionPacketIsStreamStarter(const Packet *p)
}
if ( ( tcph - > th_flags & ( TH_SYN | TH_ACK ) ) = = TH_SYN ) {
SCLogDebug ( " packet % " PRIu64 " is a stream starter: %02x " , p - > pcap_cnt , tcph - > th_flags ) ;
SCLogDebug ( " packet % " PRIu64 " is a stream starter: %02x " , PcapPacketCntGet ( p ) ,
tcph - > th_flags ) ;
return 1 ;
}
if ( stream_config . midstream | | stream_config . async_oneside ) {
if ( ( tcph - > th_flags & ( TH_SYN | TH_ACK ) ) = = ( TH_SYN | TH_ACK ) ) {
SCLogDebug ( " packet % " PRIu64 " is a midstream stream starter: %02x " , p - > pcap_cnt ,
tcph - > th_flags ) ;
SCLogDebug ( " packet % " PRIu64 " is a midstream stream starter: %02x " ,
PcapPacketCntGet ( p ) , tcph - > th_flags ) ;
return 1 ;
}
}
@ -5941,43 +5949,57 @@ static bool TcpSessionReuseDoneEnoughSyn(const Packet *p, const Flow *f, const T
if ( ssn = = NULL ) {
/* most likely a flow that was picked up after the 3whs, or a flow that
* does not have a session due to memcap issues . */
SCLogDebug ( " steam starter packet % " PRIu64 " , ssn %p null. Reuse. " , p - > pcap_cnt , ssn ) ;
SCLogDebug ( " stream starter packet % " PRIu64 " , ssn %p null. Reuse. " ,
PcapPacketCntGet ( p ) , ssn ) ;
return true ;
}
if ( ssn - > flags & STREAMTCP_FLAG_TFO_DATA_IGNORED ) {
SCLogDebug ( " st eam starter packet %" PRIu64
SCLogDebug ( " st r eam starter packet %" PRIu64
" , ssn %p. STREAMTCP_FLAG_TFO_DATA_IGNORED set. Reuse. " ,
p - > pcap_cnt , ssn ) ;
PcapPacketCntGet ( p ) , ssn ) ;
return true ;
}
if ( SEQ_EQ ( ssn - > client . isn , TCP_GET_RAW_SEQ ( tcph ) ) ) {
SCLogDebug ( " steam starter packet % " PRIu64 " , ssn %p. Packet SEQ == Stream ISN. Retransmission. Don't reuse. " , p - > pcap_cnt , ssn ) ;
SCLogDebug ( " stream starter packet % " PRIu64
" , ssn %p. Packet SEQ == Stream ISN. Retransmission. Don't reuse. " ,
PcapPacketCntGet ( p ) , ssn ) ;
return false ;
}
if ( ssn - > state > = TCP_LAST_ACK ) {
SCLogDebug ( " steam starter packet % " PRIu64 " , ssn %p state >= TCP_LAST_ACK (%u). Reuse. " , p - > pcap_cnt , ssn , ssn - > state ) ;
SCLogDebug ( " stream starter packet % " PRIu64
" , ssn %p state >= TCP_LAST_ACK (%u). Reuse. " ,
PcapPacketCntGet ( p ) , ssn , ssn - > state ) ;
return true ;
} else if ( ssn - > state = = TCP_NONE ) {
SCLogDebug ( " steam starter packet % " PRIu64 " , ssn %p state == TCP_NONE (%u). Reuse. " , p - > pcap_cnt , ssn , ssn - > state ) ;
SCLogDebug ( " stream starter packet % " PRIu64 " , ssn %p state == TCP_NONE (%u). Reuse. " ,
PcapPacketCntGet ( p ) , ssn , ssn - > state ) ;
return true ;
} else { // < TCP_LAST_ACK
SCLogDebug ( " steam starter packet % " PRIu64 " , ssn %p state < TCP_LAST_ACK (%u). Don't reuse. " , p - > pcap_cnt , ssn , ssn - > state ) ;
SCLogDebug ( " stream starter packet % " PRIu64
" , ssn %p state < TCP_LAST_ACK (%u). Don't reuse. " ,
PcapPacketCntGet ( p ) , ssn , ssn - > state ) ;
return false ;
}
} else {
if ( ssn = = NULL ) {
SCLogDebug ( " steam starter packet % " PRIu64 " , ssn %p null. Reuse. " , p - > pcap_cnt , ssn ) ;
SCLogDebug ( " stream starter packet % " PRIu64 " , ssn %p null. Reuse. " ,
PcapPacketCntGet ( p ) , ssn ) ;
return true ;
}
if ( ssn - > state > = TCP_LAST_ACK ) {
SCLogDebug ( " steam starter packet % " PRIu64 " , ssn %p state >= TCP_LAST_ACK (%u). Reuse. " , p - > pcap_cnt , ssn , ssn - > state ) ;
SCLogDebug ( " stream starter packet % " PRIu64
" , ssn %p state >= TCP_LAST_ACK (%u). Reuse. " ,
PcapPacketCntGet ( p ) , ssn , ssn - > state ) ;
return true ;
} else if ( ssn - > state = = TCP_NONE ) {
SCLogDebug ( " steam starter packet % " PRIu64 " , ssn %p state == TCP_NONE (%u). Reuse. " , p - > pcap_cnt , ssn , ssn - > state ) ;
SCLogDebug ( " stream starter packet % " PRIu64 " , ssn %p state == TCP_NONE (%u). Reuse. " ,
PcapPacketCntGet ( p ) , ssn , ssn - > state ) ;
return true ;
} else { // < TCP_LAST_ACK
SCLogDebug ( " steam starter packet % " PRIu64 " , ssn %p state < TCP_LAST_ACK (%u). Don't reuse. " , p - > pcap_cnt , ssn , ssn - > state ) ;
SCLogDebug ( " stream starter packet % " PRIu64
" , ssn %p state < TCP_LAST_ACK (%u). Don't reuse. " ,
PcapPacketCntGet ( p ) , ssn , ssn - > state ) ;
return false ;
}
}
@ -5995,37 +6017,51 @@ static bool TcpSessionReuseDoneEnoughSynAck(const Packet *p, const Flow *f, cons
const TCPHdr * tcph = PacketGetTCP ( p ) ;
if ( FlowGetPacketDirection ( f , p ) = = TOCLIENT ) {
if ( ssn = = NULL ) {
SCLogDebug ( " steam starter packet % " PRIu64 " , ssn %p null. No reuse. " , p - > pcap_cnt , ssn ) ;
SCLogDebug ( " stream starter packet % " PRIu64 " , ssn %p null. No reuse. " ,
PcapPacketCntGet ( p ) , ssn ) ;
return false ;
}
if ( SEQ_EQ ( ssn - > server . isn , TCP_GET_RAW_SEQ ( tcph ) ) ) {
SCLogDebug ( " steam starter packet % " PRIu64 " , ssn %p. Packet SEQ == Stream ISN. Retransmission. Don't reuse. " , p - > pcap_cnt , ssn ) ;
SCLogDebug ( " stream starter packet % " PRIu64
" , ssn %p. Packet SEQ == Stream ISN. Retransmission. Don't reuse. " ,
PcapPacketCntGet ( p ) , ssn ) ;
return false ;
}
if ( ssn - > state > = TCP_LAST_ACK ) {
SCLogDebug ( " steam starter packet % " PRIu64 " , ssn %p state >= TCP_LAST_ACK (%u). Reuse. " , p - > pcap_cnt , ssn , ssn - > state ) ;
SCLogDebug ( " stream starter packet % " PRIu64
" , ssn %p state >= TCP_LAST_ACK (%u). Reuse. " ,
PcapPacketCntGet ( p ) , ssn , ssn - > state ) ;
return true ;
} else if ( ssn - > state = = TCP_NONE ) {
SCLogDebug ( " steam starter packet % " PRIu64 " , ssn %p state == TCP_NONE (%u). Reuse. " , p - > pcap_cnt , ssn , ssn - > state ) ;
SCLogDebug ( " stream starter packet % " PRIu64 " , ssn %p state == TCP_NONE (%u). Reuse. " ,
PcapPacketCntGet ( p ) , ssn , ssn - > state ) ;
return true ;
} else { // < TCP_LAST_ACK
SCLogDebug ( " steam starter packet % " PRIu64 " , ssn %p state < TCP_LAST_ACK (%u). Don't reuse. " , p - > pcap_cnt , ssn , ssn - > state ) ;
SCLogDebug ( " stream starter packet % " PRIu64
" , ssn %p state < TCP_LAST_ACK (%u). Don't reuse. " ,
PcapPacketCntGet ( p ) , ssn , ssn - > state ) ;
return false ;
}
} else {
if ( ssn = = NULL ) {
SCLogDebug ( " steam starter packet % " PRIu64 " , ssn %p null. Reuse. " , p - > pcap_cnt , ssn ) ;
SCLogDebug ( " stream starter packet % " PRIu64 " , ssn %p null. Reuse. " ,
PcapPacketCntGet ( p ) , ssn ) ;
return true ;
}
if ( ssn - > state > = TCP_LAST_ACK ) {
SCLogDebug ( " steam starter packet % " PRIu64 " , ssn %p state >= TCP_LAST_ACK (%u). Reuse. " , p - > pcap_cnt , ssn , ssn - > state ) ;
SCLogDebug ( " stream starter packet % " PRIu64
" , ssn %p state >= TCP_LAST_ACK (%u). Reuse. " ,
PcapPacketCntGet ( p ) , ssn , ssn - > state ) ;
return true ;
} else if ( ssn - > state = = TCP_NONE ) {
SCLogDebug ( " steam starter packet % " PRIu64 " , ssn %p state == TCP_NONE (%u). Reuse. " , p - > pcap_cnt , ssn , ssn - > state ) ;
SCLogDebug ( " stream starter packet % " PRIu64 " , ssn %p state == TCP_NONE (%u). Reuse. " ,
PcapPacketCntGet ( p ) , ssn , ssn - > state ) ;
return true ;
} else { // < TCP_LAST_ACK
SCLogDebug ( " steam starter packet % " PRIu64 " , ssn %p state < TCP_LAST_ACK (%u). Don't reuse. " , p - > pcap_cnt , ssn , ssn - > state ) ;
SCLogDebug ( " stream starter packet % " PRIu64
" , ssn %p state < TCP_LAST_ACK (%u). Don't reuse. " ,
PcapPacketCntGet ( p ) , ssn , ssn - > state ) ;
return false ;
}
}
@ -6076,13 +6112,13 @@ TmEcode StreamTcp (ThreadVars *tv, Packet *p, void *data, PacketQueueNoLock *pq)
StreamTcpThread * stt = ( StreamTcpThread * ) data ;
SCLogDebug ( " p->pcap_cnt %" PRIu64 " direction %s pkt_src %s " , p - > pcap_cnt ,
SCLogDebug ( " PcapPacketCntGet(p) %" PRIu64 " direction %s pkt_src %s " , PcapPacketCntGet ( p ) ,
p - > flow ? ( FlowGetPacketDirection ( p - > flow , p ) = = TOSERVER ? " toserver " : " toclient " )
: " noflow " ,
PktSrcToString ( p - > pkt_src ) ) ;
# ifdef DEBUG
t_pcapcnt = p - > pcap_cnt ;
t_pcapcnt = PcapPacketCntGet ( p ) ;
# endif /* DEBUG */
if ( ! ( PacketIsTCP ( p ) ) ) {