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>
return ERR_MEM;
}
- ret = udp_bind(pcb, IP_ANY_TYPE, TFTP_PORT);
- if (ret != ERR_OK) {
- udp_remove(pcb);
- return ret;
+ if (mode == LWIP_TFTP_MODE_SERVER) {
+ ret = udp_bind(pcb, IP_ANY_TYPE, TFTP_PORT);
+ if (ret != ERR_OK) {
+ udp_remove(pcb);
+ return ret;
+ }
}
tftp_state.handle = NULL;