summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2015-10-27 01:26:05 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2015-10-27 01:39:57 +0300
commitfa87e90cfad8887e58f70d0ca0ae771c57c60a29 (patch)
treeb78b4cdb9b9e4d61606f5cbda1275fc591548298
parent76217064ac13433ffe932db1c315e0303a66765b (diff)
downloadmicropython-fa87e90cfad8887e58f70d0ca0ae771c57c60a29.tar.gz
micropython-fa87e90cfad8887e58f70d0ca0ae771c57c60a29.zip
extmod/modlwip: lwip_tcp_send(): Common subexpression elimination, use MIN().
-rw-r--r--extmod/modlwip.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/extmod/modlwip.c b/extmod/modlwip.c
index 6d9d240329..85f39a6177 100644
--- a/extmod/modlwip.c
+++ b/extmod/modlwip.c
@@ -353,18 +353,19 @@ STATIC mp_uint_t lwip_udp_receive(lwip_socket_obj_t *socket, byte *buf, mp_uint_
}
// Helper function for send/sendto to handle TCP packets
-STATIC mp_uint_t lwip_tcp_send(lwip_socket_obj_t *socket, const byte *buf, mp_uint_t
- len, int *_errno) {
- u16_t available = tcp_sndbuf((struct tcp_pcb *)socket->pcb);
+STATIC mp_uint_t lwip_tcp_send(lwip_socket_obj_t *socket, const byte *buf, mp_uint_t len, int *_errno) {
+ struct tcp_pcb *pcb = (struct tcp_pcb *)socket->pcb;
+ u16_t available = tcp_sndbuf(pcb);
+ u16_t write_len = MIN(available, len);
- err_t err = tcp_write((struct tcp_pcb *)socket->pcb, buf, (available > len ? len : available), TCP_WRITE_FLAG_COPY);
+ err_t err = tcp_write(pcb, buf, write_len, TCP_WRITE_FLAG_COPY);
if (err != ERR_OK) {
*_errno = error_lookup_table[-err];
return -1;
}
- return available > len ? len : available;
+ return write_len;
}
// Helper function for recv/recvfrom to handle TCP packets