net: lwip: tftp: bind to TFTP port only when in server mode

The TFTP app should not bind to the TFTP server port when configured as
a client. Instead, the local port should be chosen from the dynamic
range (49152 ~ 65535) so that if the application is stopped and started
again, the remote server will not consider the new packets as part of
the same context (which would cause an error since a new RRQ would be
unexpected).

Submitted upstream: https://savannah.nongnu.org/patch/?10480

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
This commit is contained in:
Jerome Forissier 2024-10-16 12:04:04 +02:00 committed by Tom Rini
parent 98ad145db6
commit 5634ecc88e

View file

@ -454,11 +454,13 @@ tftp_init_common(u8_t mode, const struct tftp_context *ctx)
return ERR_MEM; return ERR_MEM;
} }
if (mode == LWIP_TFTP_MODE_SERVER) {
ret = udp_bind(pcb, IP_ANY_TYPE, TFTP_PORT); ret = udp_bind(pcb, IP_ANY_TYPE, TFTP_PORT);
if (ret != ERR_OK) { if (ret != ERR_OK) {
udp_remove(pcb); udp_remove(pcb);
return ret; return ret;
} }
}
tftp_state.handle = NULL; tftp_state.handle = NULL;
tftp_state.port = 0; tftp_state.port = 0;