[Dnsmasq-discuss] [Patch] Tftp regression at least on FreeBSD
Loïc Pefferkorn
loic-dnsmasq at loicp.eu
Mon Jul 18 23:26:36 BST 2011
Hello,
I have found that tftp functionality no longer works since 2.56 (client
hangs), at least on FreeBSD (checked on 9-CURRENT amd64).
A patch is included bellow, it shouldn't harm other OSes. (tested on Linux)
Here is the regression, between 2.55 and 2.56 versions, still present in
2.57:
Server output:
[root at tic ~/dnsmasq-2.55]# ./src/dnsmasq -d --enable-tftp
dnsmasq: started, version 2.55 cachesize 150
dnsmasq: compile time options: IPv6 GNU-getopt no-DBus no-I18N DHCP TFTP
dnsmasq-tftp: TFTP enabled
dnsmasq: reading /etc/resolv.conf
dnsmasq: using nameserver 212.27.40.240#53
dnsmasq: read /etc/hosts - 4 addresses
dnsmasq-tftp: file /a not found
Client output:
tftp> get a
Got ERROR packet: file /a not found
Error code 256: file /a not found
tftp>
Server output:
[root at tic ~/dnsmasq-2.56]# ./src/dnsmasq -d --enable-tftp
dnsmasq: started, version 2.56 cachesize 150
dnsmasq: compile time options: IPv6 GNU-getopt no-DBus no-I18N DHCP TFTP
dnsmasq-tftp: TFTP enabled
dnsmasq: reading /etc/resolv.conf
dnsmasq: using nameserver 212.27.40.240#53
dnsmasq: read /etc/hosts - 4 addresses
Client output:
tftp> get a
Try 1, didn't receive answer from remote.
Try 2, didn't receive answer from remote.
Try 3, didn't receive answer from remote.
(...) and so on, until timeout
Fix: http://loicp.eu/patchs/dnsmasq/tftp.c.diff
--- tftp.c.orig 2011-07-19 00:16:39.000000000 +0200
+++ tftp.c 2011-07-19 00:16:49.000000000 +0200
@@ -260,7 +260,7 @@
/* if we have a nailed-down range, iterate until we find a free one. */
while (1)
{
- if (bind(transfer->sockfd, &addr.sa, sizeof(addr)) == -1 ||
+ if (bind(transfer->sockfd, &addr.sa, sizeof(addr.sa)) == -1 ||
#if defined(IP_MTU_DISCOVER) && defined(IP_PMTUDISC_DONT)
setsockopt(transfer->sockfd, SOL_IP, IP_MTU_DISCOVER, &mtuflag,
sizeof(mtuflag)) == -1 ||
#endif
bind() returned -1, it seems not correctly catched, but I'm not sure how
to fix that.
Please keep up the good work, Dnsmasq is excellent :)
Best regards,
Loïc Pefferkorn
More information about the Dnsmasq-discuss
mailing list