[Dnsmasq-discuss] [Patch] Tftp regression at least on FreeBSD
Simon Kelley
simon at thekelleys.org.uk
Tue Jul 19 08:25:28 BST 2011
"Loïc Pefferkorn" <loic-dnsmasq at loicp.eu> wrote:
>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
>
>_______________________________________________
>Dnsmasq-discuss mailing list
>Dnsmasq-discuss at lists.thekelleys.org.uk
>http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss
Thanks for that. I'll take a close look at it in a couple of weeks when I'm home from holiday. If you don't hear from me, please prod
me again.
Cheers,
Simon.
More information about the Dnsmasq-discuss
mailing list