summaryrefslogtreecommitdiff
path: root/kernel/network/tcp.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/network/tcp.c')
-rw-r--r--kernel/network/tcp.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/network/tcp.c b/kernel/network/tcp.c
index bb48f53..e6febba 100644
--- a/kernel/network/tcp.c
+++ b/kernel/network/tcp.c
@@ -84,6 +84,7 @@ void tcp_send_empty_payload(struct TcpConnection *con, u8 flags) {
header.dst_port = htons(con->outgoing_port);
header.seq_num = htonl(con->snd_nxt);
if (flags & ACK) {
+ con->should_send_ack = 0;
header.ack_num = htonl(con->rcv_nxt);
} else {
header.ack_num = 0;
@@ -282,7 +283,7 @@ void handle_tcp(ipv4_t src_ip, ipv4_t dst_ip, const u8 *payload,
int rc = ringbuffer_write(&con->incoming_buffer, tcp_payload,
tcp_payload_length);
con->rcv_nxt += rc;
- tcp_send_empty_payload(con, ACK);
+ con->should_send_ack = 1;
}
break;
}