diff --git a/src/core/tcp.c b/src/core/tcp.c index c5c6d297..95c7b011 100644 --- a/src/core/tcp.c +++ b/src/core/tcp.c @@ -873,14 +873,16 @@ tcp_new_port(void) struct tcp_pcb *pcb; again: - if (tcp_port++ == TCP_LOCAL_PORT_RANGE_END) { + tcp_port++; + if (tcp_port == TCP_LOCAL_PORT_RANGE_END) { tcp_port = TCP_LOCAL_PORT_RANGE_START; } /* Check all PCB lists. */ for (i = 0; i < NUM_TCP_PCB_LISTS; i++) { for (pcb = *tcp_pcb_lists[i]; pcb != NULL; pcb = pcb->next) { if (pcb->local_port == tcp_port) { - if (++n > (TCP_LOCAL_PORT_RANGE_END - TCP_LOCAL_PORT_RANGE_START)) { + n++; + if (n > (TCP_LOCAL_PORT_RANGE_END - TCP_LOCAL_PORT_RANGE_START)) { return 0; } goto again;