[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