1
0
mirror of https://github.com/mfontanini/libtins synced 2026-01-27 04:11:35 +01:00

Fix bug on TCPStreamFollower.

This commit is contained in:
Matias Fontanini
2014-04-12 11:53:00 -03:00
parent 86e3f138f8
commit 4ee89662f2

View File

@@ -211,10 +211,10 @@ bool TCPStream::generic_process(uint32_t &my_seq, uint32_t &other_seq,
my_seq += it->second->payload_size();
delete it->second;
it = erase_iterator(it, frags);
added_some = true;
if(frags.empty())
break;
}
added_some = true;
}
}
else
@@ -224,17 +224,20 @@ bool TCPStream::generic_process(uint32_t &my_seq, uint32_t &other_seq,
}
bool TCPStream::update(IP *ip, TCP *tcp) {
if(!syn_ack_sent && tcp->get_flag(TCP::SYN) && tcp->get_flag(TCP::ACK)) {
server_seq = tcp->seq() + 1;
client_seq = tcp->ack_seq();
syn_ack_sent = true;
if(!syn_ack_sent) {
if(tcp->flags() == (TCP::SYN | TCP::ACK)) {
server_seq = tcp->seq() + 1;
client_seq = tcp->ack_seq();
syn_ack_sent = true;
}
return false;
}
else {
if(ip->src_addr() == info.client_addr)
if(ip->src_addr() == info.client_addr && tcp->sport() == info.client_port)
return generic_process(client_seq, server_seq, client_payload_, client_frags, tcp);
else
else {
return generic_process(server_seq, client_seq, server_payload_, server_frags, tcp);
}
}
}