mirror of https://github.com/xemu-project/xemu.git
net/colo-compare.c: Fix ACK track reverse issue
The TCP protocol ACK maybe bigger than uint32_t MAX. At this time, the ACK will reverse to 0. This patch fix the max_ack and min_ack track issue. Signed-off-by: Zhang Chen <chen.zhang@intel.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
d05dcd94ae
commit
fb5eca4a57
|
@ -209,7 +209,8 @@ static void fill_pkt_tcp_info(void *data, uint32_t *max_ack)
|
|||
|
||||
pkt->tcp_seq = ntohl(tcphd->th_seq);
|
||||
pkt->tcp_ack = ntohl(tcphd->th_ack);
|
||||
*max_ack = *max_ack > pkt->tcp_ack ? *max_ack : pkt->tcp_ack;
|
||||
/* Need to consider ACK will bigger than uint32_t MAX */
|
||||
*max_ack = pkt->tcp_ack - *max_ack > 0 ? pkt->tcp_ack : *max_ack;
|
||||
pkt->header_size = pkt->transport_header - (uint8_t *)pkt->data
|
||||
+ (tcphd->th_off << 2);
|
||||
pkt->payload_size = pkt->size - pkt->header_size;
|
||||
|
@ -413,7 +414,8 @@ static void colo_compare_tcp(CompareState *s, Connection *conn)
|
|||
* can ensure that the packet's payload is acknowledged by
|
||||
* primary and secondary.
|
||||
*/
|
||||
uint32_t min_ack = conn->pack > conn->sack ? conn->sack : conn->pack;
|
||||
uint32_t min_ack = conn->pack - conn->sack > 0 ?
|
||||
conn->sack : conn->pack;
|
||||
|
||||
pri:
|
||||
if (g_queue_is_empty(&conn->primary_list)) {
|
||||
|
|
Loading…
Reference in New Issue