import of dnsmasq-2.30.tar.gz
diff --git a/CHANGELOG b/CHANGELOG
index 6c9bf72..918e1ef 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1801,6 +1801,11 @@
 	    as root, and log a warning. Thanks to Scott Wehrenberg
 	    for help tracking this down.
 
+version 2.30
+            Fixed crash when a DHCP client requested a broadcast
+            reply. This problem was introduced in version 2.29.
+	    Thanks to Sandra Dekkers for the bug report.
+
 
 
 
diff --git a/dnsmasq-rh.spec b/dnsmasq-rh.spec
index df2efcf..aaa092f 100644
--- a/dnsmasq-rh.spec
+++ b/dnsmasq-rh.spec
@@ -5,7 +5,7 @@
 ###############################################################################
 
 Name: dnsmasq
-Version: 2.29
+Version: 2.30
 Release: 1
 License: GPL
 Group: System Environment/Daemons
diff --git a/dnsmasq-suse.spec b/dnsmasq-suse.spec
index 40fca66..fe308ec 100644
--- a/dnsmasq-suse.spec
+++ b/dnsmasq-suse.spec
@@ -5,7 +5,7 @@
 ###############################################################################
 
 Name: dnsmasq
-Version: 2.29
+Version: 2.30
 Release: 1
 Copyright: GPL
 Group: Productivity/Networking/DNS/Servers
diff --git a/po/de.po b/po/de.po
index 0f892ea..0b1e14b 100644
--- a/po/de.po
+++ b/po/de.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: dnsmasq 2.24\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-04-21 19:59+0100\n"
+"POT-Creation-Date: 2006-04-23 19:58+0100\n"
 "PO-Revision-Date: 2005-09-27 09:37+0100\n"
 "Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
 "Language-Team: German <de@li.org>\n"
@@ -20,19 +20,19 @@
 msgid "failed to load names from %s: %m"
 msgstr ""
 
-#: cache.c:606 dhcp.c:654
+#: cache.c:606 dhcp.c:655
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
 # @Simon: Here I need an example to understand it :)
-#: cache.c:633 dhcp.c:668
+#: cache.c:633 dhcp.c:669
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
 # @Simon: Here I need an example to understand it :)
-#: cache.c:639 dhcp.c:722
+#: cache.c:639 dhcp.c:723
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "lese %s - %d Adressen"
@@ -537,7 +537,7 @@
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:1884 network.c:501
+#: option.c:1884 network.c:481
 #, c-format
 msgid "failed to read %s: %m"
 msgstr ""
@@ -566,7 +566,7 @@
 msgid "failed to load %s: %m"
 msgstr ""
 
-#: isc.c:93 network.c:505
+#: isc.c:93 network.c:485
 #, c-format
 msgid "reading %s"
 msgstr ""
@@ -581,59 +581,59 @@
 msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
 msgstr ""
 
-#: network.c:328 dnsmasq.c:129
+#: network.c:308 dnsmasq.c:129
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
 
-#: network.c:335
+#: network.c:315
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr ""
 
-#: network.c:353
+#: network.c:333
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr ""
 
-#: network.c:361
+#: network.c:341
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr ""
 
-#: network.c:431
+#: network.c:411
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:440
+#: network.c:420
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %m"
 msgstr ""
 
-#: network.c:454
+#: network.c:434
 msgid "domain"
 msgstr ""
 
-#: network.c:456
+#: network.c:436
 msgid "unqualified"
 msgstr ""
 
-#: network.c:456
+#: network.c:436
 msgid "domains"
 msgstr ""
 
-#: network.c:459
+#: network.c:439
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:461
+#: network.c:441
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:464
+#: network.c:444
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
@@ -765,27 +765,27 @@
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr ""
 
-#: dhcp.c:306
+#: dhcp.c:307
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr ""
 
-#: dhcp.c:622
+#: dhcp.c:623
 #, c-format
 msgid "failed to read %s:%m"
 msgstr ""
 
-#: dhcp.c:641
+#: dhcp.c:642
 #, c-format
 msgid "bad line at %s line %d"
 msgstr ""
 
-#: dhcp.c:745
+#: dhcp.c:746
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr ""
 
-#: dhcp.c:781
+#: dhcp.c:782
 #, c-format
 msgid "Ignoring DHCP host name %s because it has an illegal domain part"
 msgstr ""
diff --git a/po/es.po b/po/es.po
index 0c84c13..a130741 100644
--- a/po/es.po
+++ b/po/es.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: dnsmasq 2.24\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-04-21 19:59+0100\n"
+"POT-Creation-Date: 2006-04-23 19:58+0100\n"
 "PO-Revision-Date: 2005-10-07 11:04+0100\n"
 "Last-Translator: Christopher Chatham <chrislinux@gmail.com>\n"
 "Language-Team: Spanish <es@li.org>\n"
@@ -20,17 +20,17 @@
 msgid "failed to load names from %s: %m"
 msgstr "no se pudo cargar nombres desde %s: %m"
 
-#: cache.c:606 dhcp.c:654
+#: cache.c:606 dhcp.c:655
 #, fuzzy, c-format
 msgid "bad address at %s line %d"
 msgstr "nombre erróneo en %s línea %d"
 
-#: cache.c:633 dhcp.c:668
+#: cache.c:633 dhcp.c:669
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "nombre erróneo en %s línea %d"
 
-#: cache.c:639 dhcp.c:722
+#: cache.c:639 dhcp.c:723
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "direcciónes %s - %d leídas"
@@ -507,7 +507,7 @@
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr "debe haber exactamente un resolv.conf desde donde leer dominio."
 
-#: option.c:1884 network.c:501
+#: option.c:1884 network.c:481
 #, c-format
 msgid "failed to read %s: %m"
 msgstr "no se pudo leer %s: %m"
@@ -537,7 +537,7 @@
 msgid "failed to load %s: %m"
 msgstr "no se pudo cargar %s: %m"
 
-#: isc.c:93 network.c:505
+#: isc.c:93 network.c:485
 #, c-format
 msgid "reading %s"
 msgstr "leyendo %s"
@@ -553,59 +553,59 @@
 msgstr ""
 "Ignorando arriendo DHCP para %s porque tiene una parte ilegal de dominio"
 
-#: network.c:328 dnsmasq.c:129
+#: network.c:308 dnsmasq.c:129
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "no se pudo crear un socket escuchador: %s"
 
-#: network.c:335
+#: network.c:315
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr "no se pudo fijar opciones IPv6 sobre el socket escuchador: %s"
 
-#: network.c:353
+#: network.c:333
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "no se pudo acoplar socket escuchador para %s: %s"
 
-#: network.c:361
+#: network.c:341
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "no se pudo escuchar en el socket: %s"
 
-#: network.c:431
+#: network.c:411
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorando servidor DNS %s - interface local"
 
-#: network.c:440
+#: network.c:420
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %m"
 msgstr "ignorando servidor DNS %s - no se pudo crear/acoplar socket: %m"
 
-#: network.c:454
+#: network.c:434
 msgid "domain"
 msgstr "dominio"
 
-#: network.c:456
+#: network.c:436
 msgid "unqualified"
 msgstr "no calificado"
 
-#: network.c:456
+#: network.c:436
 msgid "domains"
 msgstr "dominios"
 
-#: network.c:459
+#: network.c:439
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "usando direcciones locales solo para %s %s"
 
-#: network.c:461
+#: network.c:441
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "usando servidor DNS %s#%d para %s %s"
 
-#: network.c:464
+#: network.c:444
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "usando servidor DNS %s#%d"
@@ -739,27 +739,27 @@
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "dirección IP duplicada en directiva dhcp-config."
 
-#: dhcp.c:306
+#: dhcp.c:307
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr "rango DHCP %s -- %s no coincide con máscara de red %s"
 
-#: dhcp.c:622
+#: dhcp.c:623
 #, c-format
 msgid "failed to read %s:%m"
 msgstr "no se pudo leer %s:%m"
 
-#: dhcp.c:641
+#: dhcp.c:642
 #, fuzzy, c-format
 msgid "bad line at %s line %d"
 msgstr "nombre erróneo en %s línea %d"
 
-#: dhcp.c:745
+#: dhcp.c:746
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "dirección IP %s (%s) duplicada en directiva dhcp-config"
 
-#: dhcp.c:781
+#: dhcp.c:782
 #, c-format
 msgid "Ignoring DHCP host name %s because it has an illegal domain part"
 msgstr ""
diff --git a/po/fi.po b/po/fi.po
index 0e95737..b356286 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: dnsmasq 2.24\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-04-21 19:59+0100\n"
+"POT-Creation-Date: 2006-04-23 19:58+0100\n"
 "PO-Revision-Date: 2005-11-28 22:05+0000\n"
 "Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
@@ -20,17 +20,17 @@
 msgid "failed to load names from %s: %m"
 msgstr ""
 
-#: cache.c:606 dhcp.c:654
+#: cache.c:606 dhcp.c:655
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
-#: cache.c:633 dhcp.c:668
+#: cache.c:633 dhcp.c:669
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
-#: cache.c:639 dhcp.c:722
+#: cache.c:639 dhcp.c:723
 #, c-format
 msgid "read %s - %d addresses"
 msgstr ""
@@ -488,7 +488,7 @@
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:1884 network.c:501
+#: option.c:1884 network.c:481
 #, c-format
 msgid "failed to read %s: %m"
 msgstr ""
@@ -517,7 +517,7 @@
 msgid "failed to load %s: %m"
 msgstr ""
 
-#: isc.c:93 network.c:505
+#: isc.c:93 network.c:485
 #, c-format
 msgid "reading %s"
 msgstr ""
@@ -532,59 +532,59 @@
 msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
 msgstr ""
 
-#: network.c:328 dnsmasq.c:129
+#: network.c:308 dnsmasq.c:129
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
 
-#: network.c:335
+#: network.c:315
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr ""
 
-#: network.c:353
+#: network.c:333
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr ""
 
-#: network.c:361
+#: network.c:341
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr ""
 
-#: network.c:431
+#: network.c:411
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:440
+#: network.c:420
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %m"
 msgstr ""
 
-#: network.c:454
+#: network.c:434
 msgid "domain"
 msgstr ""
 
-#: network.c:456
+#: network.c:436
 msgid "unqualified"
 msgstr ""
 
-#: network.c:456
+#: network.c:436
 msgid "domains"
 msgstr ""
 
-#: network.c:459
+#: network.c:439
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:461
+#: network.c:441
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:464
+#: network.c:444
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
@@ -716,27 +716,27 @@
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr ""
 
-#: dhcp.c:306
+#: dhcp.c:307
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr ""
 
-#: dhcp.c:622
+#: dhcp.c:623
 #, c-format
 msgid "failed to read %s:%m"
 msgstr ""
 
-#: dhcp.c:641
+#: dhcp.c:642
 #, c-format
 msgid "bad line at %s line %d"
 msgstr ""
 
-#: dhcp.c:745
+#: dhcp.c:746
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr ""
 
-#: dhcp.c:781
+#: dhcp.c:782
 #, c-format
 msgid "Ignoring DHCP host name %s because it has an illegal domain part"
 msgstr ""
diff --git a/po/fr.po b/po/fr.po
index 7e9b019..5c81a70 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: dnsmasq 2.24\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-04-21 19:59+0100\n"
+"POT-Creation-Date: 2006-04-23 19:58+0100\n"
 "PO-Revision-Date: 2005-10-02 19:05+0100\n"
 "Last-Translator:  Lionel Tricon <lionel.tricon@free.fr>\n"
 "Language-Team: French <traduc@traduc.org>\n"
@@ -20,17 +20,17 @@
 msgid "failed to load names from %s: %m"
 msgstr "Impossible de charger les noms a partir de %s: %m"
 
-#: cache.c:606 dhcp.c:654
+#: cache.c:606 dhcp.c:655
 #, fuzzy, c-format
 msgid "bad address at %s line %d"
 msgstr "mauvais nom dans %s ligne %d"
 
-#: cache.c:633 dhcp.c:668
+#: cache.c:633 dhcp.c:669
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "mauvais nom dans %s ligne %d"
 
-#: cache.c:639 dhcp.c:722
+#: cache.c:639 dhcp.c:723
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "lecture %s - %d adresses"
@@ -519,7 +519,7 @@
 "on doit avoir exactement un seul fichier resolv.conf pour y recuperer le nom "
 "de domaine."
 
-#: option.c:1884 network.c:501
+#: option.c:1884 network.c:481
 #, c-format
 msgid "failed to read %s: %m"
 msgstr "impossible de lire %s: %m"
@@ -550,7 +550,7 @@
 msgid "failed to load %s: %m"
 msgstr "impossible de charger %s: %m"
 
-#: isc.c:93 network.c:505
+#: isc.c:93 network.c:485
 #, c-format
 msgid "reading %s"
 msgstr "Lecture %s"
@@ -566,59 +566,59 @@
 msgstr ""
 "On ignore le bail DHCP pour %s car il possede un nom de domaine illegal"
 
-#: network.c:328 dnsmasq.c:129
+#: network.c:308 dnsmasq.c:129
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "impossible de creer une socket de lecture: %s"
 
-#: network.c:335
+#: network.c:315
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr "impossible d'activer les options IPV6 sur la socket de lecture: %s"
 
-#: network.c:353
+#: network.c:333
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "impossible de lier la socket de lecture pour %s: %s"
 
-#: network.c:361
+#: network.c:341
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "impossible de lire sur la socket: %s"
 
-#: network.c:431
+#: network.c:411
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "on ignore le serveur de nom %s - interface locale"
 
-#: network.c:440
+#: network.c:420
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %m"
 msgstr "on ignore le serveur de nom %s - ne peut construire/lier la socket: %m"
 
-#: network.c:454
+#: network.c:434
 msgid "domain"
 msgstr "domaine"
 
-#: network.c:456
+#: network.c:436
 msgid "unqualified"
 msgstr "non-qualifie"
 
-#: network.c:456
+#: network.c:436
 msgid "domains"
 msgstr "domaines"
 
-#: network.c:459
+#: network.c:439
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "on utilise les adresses locales seulement pour %s %s"
 
-#: network.c:461
+#: network.c:441
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "on utilise le serveur de nom %s#%d pour %s %s"
 
-#: network.c:464
+#: network.c:444
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "on utilise le serveur de nom %s#%d"
@@ -754,29 +754,29 @@
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "adresse IP %s dupliquee dans la directive dhcp-config."
 
-#: dhcp.c:306
+#: dhcp.c:307
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr ""
 "La plage d'adresses DHCP %s -- %s n'est pas coherente avec le masque de "
 "reseau %s"
 
-#: dhcp.c:622
+#: dhcp.c:623
 #, c-format
 msgid "failed to read %s:%m"
 msgstr "impossible de lire %s:%m"
 
-#: dhcp.c:641
+#: dhcp.c:642
 #, fuzzy, c-format
 msgid "bad line at %s line %d"
 msgstr "mauvais nom dans %s ligne %d"
 
-#: dhcp.c:745
+#: dhcp.c:746
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "adresse IP %s (%s) dupliquee dans la directive dhcp-config."
 
-#: dhcp.c:781
+#: dhcp.c:782
 #, c-format
 msgid "Ignoring DHCP host name %s because it has an illegal domain part"
 msgstr ""
diff --git a/po/id.po b/po/id.po
index eb32945..1a7da48 100644
--- a/po/id.po
+++ b/po/id.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: dnsmasq 2.24\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-04-21 19:59+0100\n"
+"POT-Creation-Date: 2006-04-23 19:58+0100\n"
 "PO-Revision-Date: 2005-10-07 11:45+0100\n"
 "Last-Translator: Salman AS <sas@salman.or.id>\n"
 "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
@@ -21,19 +21,19 @@
 msgstr "gagal memuat nama-nama dari %s: %m"
 
 # OK
-#: cache.c:606 dhcp.c:654
+#: cache.c:606 dhcp.c:655
 #, fuzzy, c-format
 msgid "bad address at %s line %d"
 msgstr "kesalahan nama pada %s baris %d"
 
 # OK
-#: cache.c:633 dhcp.c:668
+#: cache.c:633 dhcp.c:669
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "kesalahan nama pada %s baris %d"
 
 # OK
-#: cache.c:639 dhcp.c:722
+#: cache.c:639 dhcp.c:723
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "membaca %s - %d alamat"
@@ -605,7 +605,7 @@
 msgstr "harus mempunyai tepat satu resolv.conf untuk mendapatkan nama domain."
 
 # OK
-#: option.c:1884 network.c:501
+#: option.c:1884 network.c:481
 #, c-format
 msgid "failed to read %s: %m"
 msgstr "gagal membaca %s: %m"
@@ -640,7 +640,7 @@
 msgstr "gagal memuat %S: %m"
 
 # OK
-#: isc.c:93 network.c:505
+#: isc.c:93 network.c:485
 #, c-format
 msgid "reading %s"
 msgstr "membaca %s"
@@ -659,69 +659,69 @@
 "Mengabaikan lease DHCP untuk %s sebab terdapat bagian domain yang tidak sah"
 
 # OK
-#: network.c:328 dnsmasq.c:129
+#: network.c:308 dnsmasq.c:129
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "gagal membuat socket: %s "
 
 # OK
-#: network.c:335
+#: network.c:315
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr "gagal menyetel IPV6 pada socket: %s"
 
-#: network.c:353
+#: network.c:333
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "gagal mem-bind socket untuk mendengarkan %s: %s"
 
 # OK
-#: network.c:361
+#: network.c:341
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "gagal mendengarkan di socket: %s"
 
 # OK
-#: network.c:431
+#: network.c:411
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "mengabaikan nameserver %s - antarmuka lokal"
 
 # OK
-#: network.c:440
+#: network.c:420
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %m"
 msgstr "mengabaikan nameserver %s - tak dapat membuat/mem-bind socket: %m"
 
 # OK
-#: network.c:454
+#: network.c:434
 msgid "domain"
 msgstr "domain"
 
 # OK
-#: network.c:456
+#: network.c:436
 msgid "unqualified"
 msgstr "tidak memenuhi syarat"
 
 # OK
-#: network.c:456
+#: network.c:436
 msgid "domains"
 msgstr "domain-domain"
 
 # OK
-#: network.c:459
+#: network.c:439
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "menggunakan alamat lokal saja untuk %s %s"
 
 # OK
-#: network.c:461
+#: network.c:441
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "menggunakan nameserver %s#%d untuk %s %s"
 
 # OK
-#: network.c:464
+#: network.c:444
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "menggunakan nameserver %s#%d"
@@ -883,31 +883,31 @@
 msgstr "alamat IP kembar %s dalam direktif dhcp-config"
 
 # OK
-#: dhcp.c:306
+#: dhcp.c:307
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr "jangkauan DHCP %s -- %s tidak konsisten dengan netmask %s"
 
 # OK
-#: dhcp.c:622
+#: dhcp.c:623
 #, c-format
 msgid "failed to read %s:%m"
 msgstr "gagal membaca %s:%m"
 
 # OK
-#: dhcp.c:641
+#: dhcp.c:642
 #, fuzzy, c-format
 msgid "bad line at %s line %d"
 msgstr "kesalahan nama pada %s baris %d"
 
 # OK
-#: dhcp.c:745
+#: dhcp.c:746
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "alamat IP kembar %s (%s) dalam direktif dhcp-config"
 
 # OK
-#: dhcp.c:781
+#: dhcp.c:782
 #, c-format
 msgid "Ignoring DHCP host name %s because it has an illegal domain part"
 msgstr ""
diff --git a/po/no.po b/po/no.po
index 931ef48..881f6ca 100644
--- a/po/no.po
+++ b/po/no.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: dnsmasq 2.25\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-04-21 19:59+0100\n"
+"POT-Creation-Date: 2006-04-23 19:58+0100\n"
 "PO-Revision-Date: 2006-01-11 17:39+0000\n"
 "Last-Translator: Jan Erik Askildt <jeaskildt@gmail.com>\n"
 "Language-Team: Norwegian <i18n-nb@lister.ping.uio.no>\n"
@@ -22,17 +22,17 @@
 msgid "failed to load names from %s: %m"
 msgstr "feilet å laste navn fra %s: %m"
 
-#: cache.c:606 dhcp.c:654
+#: cache.c:606 dhcp.c:655
 #, c-format
 msgid "bad address at %s line %d"
 msgstr "dårlig adresse ved %s linje %d"
 
-#: cache.c:633 dhcp.c:668
+#: cache.c:633 dhcp.c:669
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "dårlig navn ved %s linje %d"
 
-#: cache.c:639 dhcp.c:722
+#: cache.c:639 dhcp.c:723
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "les %s - %d adresser"
@@ -499,7 +499,7 @@
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr "må ha nøyaktig en resolv.conf å lese domene fra."
 
-#: option.c:1884 network.c:501
+#: option.c:1884 network.c:481
 #, c-format
 msgid "failed to read %s: %m"
 msgstr "feilet å lese %s: %m"
@@ -528,7 +528,7 @@
 msgid "failed to load %s: %m"
 msgstr "feilet å laste %s: %m"
 
-#: isc.c:93 network.c:505
+#: isc.c:93 network.c:485
 #, c-format
 msgid "reading %s"
 msgstr "leser %s"
@@ -543,59 +543,59 @@
 msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
 msgstr "Ignorerer DHCP leie for %s siden den har en ulovlig domene del"
 
-#: network.c:328 dnsmasq.c:129
+#: network.c:308 dnsmasq.c:129
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "feilet å lage lytte socket: %s"
 
-#: network.c:335
+#: network.c:315
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr "feilet å sette IPv6 opsjoner på lytte socket: %s"
 
-#: network.c:353
+#: network.c:333
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "feilet å binde lytte socket for %s: %s"
 
-#: network.c:361
+#: network.c:341
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "feilet å lytte på socket: %s"
 
-#: network.c:431
+#: network.c:411
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorerer navnetjener %s - lokal tilknytning"
 
-#: network.c:440
+#: network.c:420
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %m"
 msgstr "ignorerer navnetjener %s - kan ikke lage/dinde socket: %m"
 
-#: network.c:454
+#: network.c:434
 msgid "domain"
 msgstr "domene"
 
-#: network.c:456
+#: network.c:436
 msgid "unqualified"
 msgstr "ikke kvalifisert"
 
-#: network.c:456
+#: network.c:436
 msgid "domains"
 msgstr "domener"
 
-#: network.c:459
+#: network.c:439
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "benytter lokale adresser kun for %s %s"
 
-#: network.c:461
+#: network.c:441
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "benytter navnetjener %s#%d for %s %s"
 
-#: network.c:464
+#: network.c:444
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "benytter navnetjener %s#%d"
@@ -728,27 +728,27 @@
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "dubliserte IP adresser i %s dhcp-config direktiv."
 
-#: dhcp.c:306
+#: dhcp.c:307
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr "DHCP område %s -- %s er ikke konsistent med nettmaske %s"
 
-#: dhcp.c:622
+#: dhcp.c:623
 #, c-format
 msgid "failed to read %s:%m"
 msgstr "feilet å lese %s:%m"
 
-#: dhcp.c:641
+#: dhcp.c:642
 #, c-format
 msgid "bad line at %s line %d"
 msgstr "dårlig linje ved %s linje %d"
 
-#: dhcp.c:745
+#: dhcp.c:746
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "dubliserte IP adresser i %s (%s) i dhcp-config direktiv"
 
-#: dhcp.c:781
+#: dhcp.c:782
 #, c-format
 msgid "Ignoring DHCP host name %s because it has an illegal domain part"
 msgstr "Ignorerer DHCP verts navn %s på grunn av ulovlig domene del"
diff --git a/po/pl.po b/po/pl.po
index ba54d42..03fdf39 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: dnsmasq 2.24\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-04-21 19:59+0100\n"
+"POT-Creation-Date: 2006-04-23 19:58+0100\n"
 "PO-Revision-Date: 2005-10-04 19:17+0100\n"
 "Last-Translator: Tomasz Sochañski <nerdhero@gmail.com>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
@@ -21,17 +21,17 @@
 msgid "failed to load names from %s: %m"
 msgstr "b³±d ³adowania nazw z %s: %m"
 
-#: cache.c:606 dhcp.c:654
+#: cache.c:606 dhcp.c:655
 #, fuzzy, c-format
 msgid "bad address at %s line %d"
 msgstr "b³êdna nazwa w %s, linia %d"
 
-#: cache.c:633 dhcp.c:668
+#: cache.c:633 dhcp.c:669
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "b³êdna nazwa w %s, linia %d"
 
-#: cache.c:639 dhcp.c:722
+#: cache.c:639 dhcp.c:723
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "przeczytano %s - %d adresów"
@@ -508,7 +508,7 @@
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr "musisz mieæ dok³adnie jeden plik resolv.conf do odczytu domen."
 
-#: option.c:1884 network.c:501
+#: option.c:1884 network.c:481
 #, c-format
 msgid "failed to read %s: %m"
 msgstr "b³±d w odczycie %s: %m"
@@ -538,7 +538,7 @@
 msgid "failed to load %s: %m"
 msgstr "b³±d ³adowania %s: %m"
 
-#: isc.c:93 network.c:505
+#: isc.c:93 network.c:485
 #, c-format
 msgid "reading %s"
 msgstr "czytanie %s"
@@ -555,59 +555,59 @@
 "Ignorujê dzier¿awy DHCP dla %s poniewa¿ zawieraj± nieprawid³ow± czê¶æ "
 "domenow±"
 
-#: network.c:328 dnsmasq.c:129
+#: network.c:308 dnsmasq.c:129
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "b³±d podczas tworzenia gniazda: %s"
 
-#: network.c:335
+#: network.c:315
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr "b³±d ustawienia opcji IPV6 na nas³uchuj±cym gnie¼dzie: %s"
 
-#: network.c:353
+#: network.c:333
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "b³±d pod³±czenia nas³uchuj±cego gniazda dla %s: %s"
 
-#: network.c:361
+#: network.c:341
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "b³±d w³±czenia nas³uchiwania gniazda: %s"
 
-#: network.c:431
+#: network.c:411
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorowanie serwera nazw %s - interfejs lokalny"
 
-#: network.c:440
+#: network.c:420
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %m"
 msgstr "ignorowanie serwera nazw %s - nie mo¿na utworzyæ/dowi±zaæ gniazda: %m"
 
-#: network.c:454
+#: network.c:434
 msgid "domain"
 msgstr "domena"
 
-#: network.c:456
+#: network.c:436
 msgid "unqualified"
 msgstr "niekwalifikowany(a/e)"
 
-#: network.c:456
+#: network.c:436
 msgid "domains"
 msgstr "domeny"
 
-#: network.c:459
+#: network.c:439
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "w³±czenie u¿ywania lokalnych adresów tylko dla %s %s"
 
-#: network.c:461
+#: network.c:441
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "u¿ywany serwer nazw: %s#%d dla %s %s"
 
-#: network.c:464
+#: network.c:444
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "u¿ywany serwer nazw %s#%d"
@@ -741,27 +741,27 @@
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "powtórzenie adresu IP %s w opcji dhcp-config"
 
-#: dhcp.c:306
+#: dhcp.c:307
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr "zakres DHCP %s -- %s jest niespójny z mask± sieciow± %s"
 
-#: dhcp.c:622
+#: dhcp.c:623
 #, c-format
 msgid "failed to read %s:%m"
 msgstr "b³±d odczytu %s:%m"
 
-#: dhcp.c:641
+#: dhcp.c:642
 #, fuzzy, c-format
 msgid "bad line at %s line %d"
 msgstr "b³êdna nazwa w %s, linia %d"
 
-#: dhcp.c:745
+#: dhcp.c:746
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "powtórzenie adresu IP %s (%s) w opcji dhcp-config"
 
-#: dhcp.c:781
+#: dhcp.c:782
 #, c-format
 msgid "Ignoring DHCP host name %s because it has an illegal domain part"
 msgstr ""
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 6278ba2..3930955 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: dnsmasq 2.26\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-04-21 19:59+0100\n"
+"POT-Creation-Date: 2006-04-23 19:58+0100\n"
 "PO-Revision-Date: 2006-01-16 20:42+0000\n"
 "Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
 "Language-Team: Portuguese <ldp-br@bazar.conectiva.com.br>\n"
@@ -20,17 +20,17 @@
 msgid "failed to load names from %s: %m"
 msgstr ""
 
-#: cache.c:606 dhcp.c:654
+#: cache.c:606 dhcp.c:655
 #, c-format
 msgid "bad address at %s line %d"
 msgstr ""
 
-#: cache.c:633 dhcp.c:668
+#: cache.c:633 dhcp.c:669
 #, c-format
 msgid "bad name at %s line %d"
 msgstr ""
 
-#: cache.c:639 dhcp.c:722
+#: cache.c:639 dhcp.c:723
 #, c-format
 msgid "read %s - %d addresses"
 msgstr ""
@@ -488,7 +488,7 @@
 msgid "must have exactly one resolv.conf to read domain from."
 msgstr ""
 
-#: option.c:1884 network.c:501
+#: option.c:1884 network.c:481
 #, c-format
 msgid "failed to read %s: %m"
 msgstr ""
@@ -517,7 +517,7 @@
 msgid "failed to load %s: %m"
 msgstr ""
 
-#: isc.c:93 network.c:505
+#: isc.c:93 network.c:485
 #, c-format
 msgid "reading %s"
 msgstr ""
@@ -532,59 +532,59 @@
 msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
 msgstr ""
 
-#: network.c:328 dnsmasq.c:129
+#: network.c:308 dnsmasq.c:129
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr ""
 
-#: network.c:335
+#: network.c:315
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr ""
 
-#: network.c:353
+#: network.c:333
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr ""
 
-#: network.c:361
+#: network.c:341
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr ""
 
-#: network.c:431
+#: network.c:411
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr ""
 
-#: network.c:440
+#: network.c:420
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %m"
 msgstr ""
 
-#: network.c:454
+#: network.c:434
 msgid "domain"
 msgstr ""
 
-#: network.c:456
+#: network.c:436
 msgid "unqualified"
 msgstr ""
 
-#: network.c:456
+#: network.c:436
 msgid "domains"
 msgstr ""
 
-#: network.c:459
+#: network.c:439
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr ""
 
-#: network.c:461
+#: network.c:441
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr ""
 
-#: network.c:464
+#: network.c:444
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr ""
@@ -716,27 +716,27 @@
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr ""
 
-#: dhcp.c:306
+#: dhcp.c:307
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr ""
 
-#: dhcp.c:622
+#: dhcp.c:623
 #, c-format
 msgid "failed to read %s:%m"
 msgstr ""
 
-#: dhcp.c:641
+#: dhcp.c:642
 #, c-format
 msgid "bad line at %s line %d"
 msgstr ""
 
-#: dhcp.c:745
+#: dhcp.c:746
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr ""
 
-#: dhcp.c:781
+#: dhcp.c:782
 #, c-format
 msgid "Ignoring DHCP host name %s because it has an illegal domain part"
 msgstr ""
diff --git a/po/ro.po b/po/ro.po
index 7fea725..95d2883 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: dnsmasq 2.24\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-04-21 19:59+0100\n"
+"POT-Creation-Date: 2006-04-23 19:58+0100\n"
 "PO-Revision-Date: 2005-11-22 16:46+0000\n"
 "Last-Translator: Simon Kelley <simon@thekelleys.org.uk>\n"
 "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
@@ -20,17 +20,17 @@
 msgid "failed to load names from %s: %m"
 msgstr "încărcarea numelor din %s: %m a eşuat"
 
-#: cache.c:606 dhcp.c:654
+#: cache.c:606 dhcp.c:655
 #, c-format
 msgid "bad address at %s line %d"
 msgstr "adresă greşită în %s, linia %d"
 
-#: cache.c:633 dhcp.c:668
+#: cache.c:633 dhcp.c:669
 #, c-format
 msgid "bad name at %s line %d"
 msgstr "nume greşit în %s linia %d"
 
-#: cache.c:639 dhcp.c:722
+#: cache.c:639 dhcp.c:723
 #, c-format
 msgid "read %s - %d addresses"
 msgstr "citesc %s - %d adrese"
@@ -500,7 +500,7 @@
 msgstr ""
 "am nevoie de un singur resolv.conf din care să citesc numele domeniului."
 
-#: option.c:1884 network.c:501
+#: option.c:1884 network.c:481
 #, c-format
 msgid "failed to read %s: %m"
 msgstr "nu pot citi %s: %n"
@@ -529,7 +529,7 @@
 msgid "failed to load %s: %m"
 msgstr "nu pot încărca %s: %n"
 
-#: isc.c:93 network.c:505
+#: isc.c:93 network.c:485
 #, c-format
 msgid "reading %s"
 msgstr "citesc %s"
@@ -544,59 +544,59 @@
 msgid "Ignoring DHCP lease for %s because it has an illegal domain part"
 msgstr "Împrumutul DHCP pentru %s va fi ignorat deoarece are domeniu invalid"
 
-#: network.c:328 dnsmasq.c:129
+#: network.c:308 dnsmasq.c:129
 #, c-format
 msgid "failed to create listening socket: %s"
 msgstr "creearea socket-ului de ascultare a eşuat: %s"
 
-#: network.c:335
+#: network.c:315
 #, c-format
 msgid "failed to set IPV6 options on listening socket: %s"
 msgstr "configurarea opţiunilor IPv6 a eşuat pe socket-ul de ascultare: %s"
 
-#: network.c:353
+#: network.c:333
 #, c-format
 msgid "failed to bind listening socket for %s: %s"
 msgstr "activarea socket-ului de ascultare pentru %s a eşuat: %s"
 
-#: network.c:361
+#: network.c:341
 #, c-format
 msgid "failed to listen on socket: %s"
 msgstr "ascultarea pe socket a eşuat: %s"
 
-#: network.c:431
+#: network.c:411
 #, c-format
 msgid "ignoring nameserver %s - local interface"
 msgstr "ignorăm serverul DNS %s - interfaţă locală"
 
-#: network.c:440
+#: network.c:420
 #, c-format
 msgid "ignoring nameserver %s - cannot make/bind socket: %m"
 msgstr "ignorăm serverul DNS %s - nu pot creea/activa socket-ul: %s"
 
-#: network.c:454
+#: network.c:434
 msgid "domain"
 msgstr "domeniu"
 
-#: network.c:456
+#: network.c:436
 msgid "unqualified"
 msgstr "invalid"
 
-#: network.c:456
+#: network.c:436
 msgid "domains"
 msgstr "domenii"
 
-#: network.c:459
+#: network.c:439
 #, c-format
 msgid "using local addresses only for %s %s"
 msgstr "folosim adresele locale doar pentru %S %s"
 
-#: network.c:461
+#: network.c:441
 #, c-format
 msgid "using nameserver %s#%d for %s %s"
 msgstr "folosim serverul DNS %s#%d pentru %s %s"
 
-#: network.c:464
+#: network.c:444
 #, c-format
 msgid "using nameserver %s#%d"
 msgstr "folosim serverul DNS %s#%d"
@@ -732,27 +732,27 @@
 msgid "duplicate IP address %s in dhcp-config directive."
 msgstr "adresă IP duplicat %s în declaraţia dhcp-config."
 
-#: dhcp.c:306
+#: dhcp.c:307
 #, c-format
 msgid "DHCP range %s -- %s is not consistent with netmask %s"
 msgstr "domeniu DHCP %s -- %s nu este consistent cu masca de reţea %s"
 
-#: dhcp.c:622
+#: dhcp.c:623
 #, c-format
 msgid "failed to read %s:%m"
 msgstr "citirea %s:%n a eşuat"
 
-#: dhcp.c:641
+#: dhcp.c:642
 #, c-format
 msgid "bad line at %s line %d"
 msgstr "linie invalidă în %s rândul %d"
 
-#: dhcp.c:745
+#: dhcp.c:746
 #, c-format
 msgid "duplicate IP address %s (%s) in dhcp-config directive"
 msgstr "adresă IP duplicat %s (%s) în declaraţia dhcp-config."
 
-#: dhcp.c:781
+#: dhcp.c:782
 #, c-format
 msgid "Ignoring DHCP host name %s because it has an illegal domain part"
 msgstr "Ignor numele DHCP al maşinii %s deoarece are domeniu DNS ilegal"
diff --git a/src/config.h b/src/config.h
index 3e9470e..7170c94 100644
--- a/src/config.h
+++ b/src/config.h
@@ -10,7 +10,7 @@
    GNU General Public License for more details.
 */
 
-#define VERSION "2.29"
+#define VERSION "2.30"
 
 #define FTABSIZ 150 /* max number of outstanding requests */
 #define MAX_PROCS 20 /* max no children for TCP requests */
diff --git a/src/dhcp.c b/src/dhcp.c
index f970cf8..b755c47 100644
--- a/src/dhcp.c
+++ b/src/dhcp.c
@@ -241,6 +241,7 @@
     {
       /* broadcast to 255.255.255.255 */
       struct in_pktinfo *pkt;
+      msg.msg_control = control_u.control;
       msg.msg_controllen = sizeof(control_u);
       cmptr = CMSG_FIRSTHDR(&msg);
       dest.sin_addr.s_addr = INADDR_BROADCAST;
diff --git a/src/network.c b/src/network.c
index ca6d9ce..f35f42a 100644
--- a/src/network.c
+++ b/src/network.c
@@ -184,7 +184,7 @@
 static int create_ipv6_listener(struct listener **link, int port)
 {
   union mysockaddr addr;
-  int tcpfd, fd, flags, save;
+  int tcpfd, fd, flags;
   struct listener *l;
   int opt = 1;
 
@@ -204,13 +204,8 @@
 	    errno == EINVAL);
   
   if ((tcpfd = socket(AF_INET6, SOCK_STREAM, 0)) == -1)
-    {
-      save = errno;
-      close(fd);
-      errno = save;
-      return 0;
-    }
-  
+    return 0;
+      
   if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) == -1 ||
       setsockopt(tcpfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) == -1 ||
       setsockopt(fd, IPV6_LEVEL, IPV6_V6ONLY, &opt, sizeof(opt)) == -1 ||
@@ -227,14 +222,8 @@
       bind(tcpfd, (struct sockaddr *)&addr, sa_len(&addr)) == -1 ||
       listen(tcpfd, 5) == -1 ||
       bind(fd, (struct sockaddr *)&addr, sa_len(&addr)) == -1) 
-    {
-      save = errno;
-      close(fd);
-      close(tcpfd);
-      errno = save;
-      return 0;
-    }
-  
+    return 0;
+      
   l = safe_malloc(sizeof(struct listener));
   l->fd = fd;
   l->tcpfd = tcpfd;
@@ -261,15 +250,10 @@
   addr.in.sin_len = sizeof(struct sockaddr_in);
 #endif
 
-  if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
+  if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) == -1 ||
+      (tcpfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
     return NULL;
   
-  if ((tcpfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
-    {
-      close (fd);
-      return NULL;
-    }
-  
   if (setsockopt(tcpfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) == -1 ||
       bind(tcpfd, (struct sockaddr *)&addr, sa_len(&addr)) == -1 ||
       listen(tcpfd, 5) == -1 ||
@@ -288,12 +272,8 @@
       setsockopt(fd, IPPROTO_IP, IP_RECVIF, &opt, sizeof(opt)) == -1 ||
 #endif 
       bind(fd, (struct sockaddr *)&addr, sa_len(&addr)) == -1)
-    {
-      close(fd);
-      close(tcpfd);
-      return NULL;
-    }
-  
+    return NULL;
+      
   l = safe_malloc(sizeof(struct listener));
   l->family = AF_INET;
   l->fd = fd;