Fixed bug #22110 (recv() makes receive window update for data that wasn't received by application); added function-like macros to correctly access/change conn->recv_timeout and conn->recv_bufsize

This commit is contained in:
goldsimon
2010-02-09 20:23:39 +00:00
parent 7699b59e27
commit 306f2203fa
6 changed files with 94 additions and 18 deletions

View File

@@ -1102,7 +1102,12 @@ do_recv(struct api_msg_msg *msg)
} else
#endif /* TCP_LISTEN_BACKLOG */
{
tcp_recved(msg->conn->pcb.tcp, msg->msg.r.len);
u32_t remaining = msg->msg.r.len;
do {
u16_t recved = (remaining > 0xffff) ? 0xffff : (u16_t)remaining;
tcp_recved(msg->conn->pcb.tcp, recved);
remaining -= recved;
}while(remaining != 0);
}
}
}