diff --git a/.gitignore b/.gitignore
index 21d95cf..7960188 100644
--- a/.gitignore
+++ b/.gitignore
@@ -40,3 +40,4 @@ bind-9.7.2b1.tar.gz
 /bind-9.9.4rc2.tar.gz
 /bind-9.9.4.tar.gz
 /config-12.tar.bz2
+/bind-9.9.5b1.tar.gz
diff --git a/bind-9.5-libidn.patch b/bind-9.5-libidn.patch
index e0831e4..739661e 100644
--- a/bind-9.5-libidn.patch
+++ b/bind-9.5-libidn.patch
@@ -1,6 +1,6 @@
-diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c
---- bind-9.7.0b1/bin/dig/dighost.c.libidn	2009-09-16 01:48:09.000000000 +0200
-+++ bind-9.7.0b1/bin/dig/dighost.c	2009-10-20 10:49:26.719056220 +0200
+diff -up bind-9.9.5b1/bin/dig/dighost.c.libidn bind-9.9.5b1/bin/dig/dighost.c
+--- bind-9.9.5b1/bin/dig/dighost.c.libidn	2013-12-12 06:59:59.000000000 +0100
++++ bind-9.9.5b1/bin/dig/dighost.c	2014-01-06 13:48:34.591300772 +0100
 @@ -44,6 +44,11 @@
  #include <idn/api.h>
  #endif
@@ -13,7 +13,7 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c
  #include <dns/byaddr.h>
  #ifdef DIG_SIGCHASE
  #include <dns/callbacks.h>
-@@ -153,6 +158,14 @@ static void		idn_check_result(idn_result
+@@ -158,6 +163,14 @@ static void		idn_check_result(idn_result
  int  idnoptions	= 0;
  #endif
  
@@ -25,10 +25,10 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c
 +				       isc_boolean_t absolute);
 +#endif
 +
- /*%
-  * Exit Codes:
-  *
-@@ -1184,6 +1197,9 @@ setup_system(void) {
+ isc_socket_t *keep = NULL;
+ isc_sockaddr_t keepaddr;
+ 
+@@ -1210,6 +1223,9 @@ setup_system(void) {
  	dig_searchlist_t *domain = NULL;
  	lwres_result_t lwresult;
  	unsigned int lwresflags;
@@ -38,7 +38,7 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c
  
  	debug("setup_system()");
  
-@@ -1242,8 +1258,15 @@ setup_system(void) {
+@@ -1268,8 +1284,15 @@ setup_system(void) {
  
  #ifdef WITH_IDN
  	initialize_idn();
@@ -55,7 +55,7 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c
  	if (keyfile[0] != 0)
  		setup_file_key();
  	else if (keysecret[0] != 0)
-@@ -1957,12 +1980,18 @@ setup_lookup(dig_lookup_t *lookup) {
+@@ -2028,12 +2051,18 @@ setup_lookup(dig_lookup_t *lookup) {
  	idn_result_t mr;
  	char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME];
  #endif
@@ -75,7 +75,7 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c
  	REQUIRE(lookup != NULL);
  	INSIST(!free_now);
  
-@@ -1999,6 +2028,16 @@ setup_lookup(dig_lookup_t *lookup) {
+@@ -2070,6 +2099,16 @@ setup_lookup(dig_lookup_t *lookup) {
  	mr = idn_encodename(IDN_LOCALCONV | IDN_DELIMMAP, lookup->textname,
  			    utf8_textname, sizeof(utf8_textname));
  	idn_check_result(mr, "convert textname to UTF-8");
@@ -92,7 +92,7 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c
  #endif
  
  	/*
-@@ -2018,6 +2057,15 @@ setup_lookup(dig_lookup_t *lookup) {
+@@ -2089,6 +2128,15 @@ setup_lookup(dig_lookup_t *lookup) {
  			lookup->origin = ISC_LIST_HEAD(search_list);
  			lookup->need_search = ISC_FALSE;
  		}
@@ -108,7 +108,7 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c
  #else
  		if ((count_dots(lookup->textname) >= ndots) || !usesearch) {
  			lookup->origin = NULL; /* Force abs lookup */
-@@ -2044,6 +2092,20 @@ setup_lookup(dig_lookup_t *lookup) {
+@@ -2115,6 +2163,20 @@ setup_lookup(dig_lookup_t *lookup) {
  			    IDN_IDNCONV | IDN_LENCHECK, utf8_textname,
  			    idn_textname, sizeof(idn_textname));
  	idn_check_result(mr, "convert UTF-8 textname to IDN encoding");
@@ -129,7 +129,7 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c
  #else
  	if (lookup->origin != NULL) {
  		debug("trying origin %s", lookup->origin->origin);
-@@ -2099,6 +2161,13 @@ setup_lookup(dig_lookup_t *lookup) {
+@@ -2170,6 +2232,13 @@ setup_lookup(dig_lookup_t *lookup) {
  			result = dns_name_fromtext(lookup->name, &b,
  						   dns_rootname, 0,
  						   &lookup->namebuf);
@@ -143,7 +143,7 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c
  #else
  			len = strlen(lookup->textname);
  			isc_buffer_init(&b, lookup->textname, len);
-@@ -3617,7 +3686,7 @@ destroy_libs(void) {
+@@ -3784,7 +3853,7 @@ destroy_libs(void) {
  	void * ptr;
  	dig_message_t *chase_msg;
  #endif
@@ -152,7 +152,7 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c
  	isc_result_t result;
  #endif
  
-@@ -3656,6 +3725,10 @@ destroy_libs(void) {
+@@ -3825,6 +3894,10 @@ destroy_libs(void) {
  	result = dns_name_settotextfilter(NULL);
  	check_result(result, "dns_name_settotextfilter");
  #endif
@@ -163,7 +163,7 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c
  	dns_name_destroy();
  
  	if (commctx != NULL) {
-@@ -3834,6 +3907,79 @@ idn_check_result(idn_result_t r, const c
+@@ -4003,6 +4076,79 @@ idn_check_result(idn_result_t r, const c
  	}
  }
  #endif /* WITH_IDN */
@@ -243,10 +243,10 @@ diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c
  
  #ifdef DIG_SIGCHASE
  void
-diff -up bind-9.7.0b1/bin/dig/Makefile.in.libidn bind-9.7.0b1/bin/dig/Makefile.in
---- bind-9.7.0b1/bin/dig/Makefile.in.libidn	2009-09-22 10:47:55.000000000 +0200
-+++ bind-9.7.0b1/bin/dig/Makefile.in	2009-10-20 10:50:06.201543709 +0200
-@@ -46,10 +46,10 @@ DEPLIBS =	${DNSDEPLIBS} ${BIND9DEPLIBS} 
+diff -up bind-9.9.5b1/bin/dig/Makefile.in.libidn bind-9.9.5b1/bin/dig/Makefile.in
+--- bind-9.9.5b1/bin/dig/Makefile.in.libidn	2013-12-12 06:59:59.000000000 +0100
++++ bind-9.9.5b1/bin/dig/Makefile.in	2014-01-06 13:31:27.764809004 +0100
+@@ -48,10 +48,10 @@ DEPLIBS =	${DNSDEPLIBS} ${BIND9DEPLIBS}
  		${LWRESDEPLIBS}
  
  LIBS =		${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} ${ISCCFGLIBS} \
@@ -259,7 +259,7 @@ diff -up bind-9.7.0b1/bin/dig/Makefile.in.libidn bind-9.7.0b1/bin/dig/Makefile.i
  
  SUBDIRS =
  
-@@ -67,6 +67,8 @@ HTMLPAGES =	dig.html host.html nslookup.
+@@ -69,6 +69,8 @@ HTMLPAGES =	dig.html host.html nslookup.
  
  MANOBJS =	${MANPAGES} ${HTMLPAGES}
  
diff --git a/bind.spec b/bind.spec
index 83085e9..978d821 100644
--- a/bind.spec
+++ b/bind.spec
@@ -3,9 +3,9 @@
 #
 
 #%%global PATCHVER P1
-#%%global PREVER rc2
-#%%global VERSION %{version}%{PREVER}
-%global VERSION %{version}
+%global PREVER b1
+%global VERSION %{version}%{PREVER}
+#%%global VERSION %{version}
 #%%global VERSION %{version}-%{PATCHVER}
 
 %{?!SDB:       %global SDB       1}
@@ -29,8 +29,8 @@
 Summary:  The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server
 Name:     bind
 License:  ISC
-Version:  9.9.4
-Release:  11%{?PATCHVER}%{?PREVER}%{?dist}
+Version:  9.9.5
+Release:  0.1.%{?PATCHVER}%{?PREVER}%{?dist}
 Epoch:    32
 Url:      http://www.isc.org/products/BIND/
 Buildroot:%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -89,11 +89,6 @@ Patch134:bind97-rh669163.patch
 Patch137:bind99-rrl.patch
 # Install dns/update.h header for bind-dyndb-ldap plugin
 Patch138:bind-9.9.3-include-update-h.patch
-Patch139:bind99-ISC-Bugs-34738.patch
-# upstream patch [ISC-Bugs #34870]
-Patch140:bind99-ISC-Bugs-34870-v3.patch
-# upstream applied patch for [ISC-Bugs #35073]
-Patch141:bind99-ISC-Bugs-35073.patch
 Patch142:bind99-ISC-Bugs-35080.patch
 
 # SDB patches
@@ -308,9 +303,6 @@ popd
 %patch131 -p1 -b .multlib-conflict
 %patch137 -p1 -b .rrl
 %patch138 -p1 -b .update
-%patch139 -p1 -b .journal
-%patch140 -p1 -b .send_buffer
-%patch141 -p1 -b .leak_35073
 %patch142 -p1 -b .rbtdb_crash
 
 %if %{SDB}
@@ -840,8 +832,10 @@ rm -rf ${RPM_BUILD_ROOT}
 %exclude %{_libdir}/*export.so
 %{_includedir}/bind9
 %{_mandir}/man1/isc-config.sh.1*
+%{_mandir}/man1/bind9-config.1*
 %{_mandir}/man3/lwres*
 %{_bindir}/isc-config.sh
+%{_bindir}/bind9-config
 %endif
 
 %files lite-devel
@@ -924,6 +918,9 @@ rm -rf ${RPM_BUILD_ROOT}
 %endif
 
 %changelog
+* Mon Jan 06 2014 Tomas Hozza <thozza@redhat.com> 32:9.9.5-0.1.b1
+- Update to bind-9.9.5b1
+
 * Wed Dec 18 2013 Tomas Hozza <thozza@redhat.com> 32:9.9.4-11
 - Fix crash in rbtdb after two sucessive getoriginnode() calls
 
diff --git a/bind97-rh570851.patch b/bind97-rh570851.patch
index e24b94c..08fc682 100644
--- a/bind97-rh570851.patch
+++ b/bind97-rh570851.patch
@@ -1,17 +1,15 @@
-diff -up bind-9.7.2b1/bin/dig/dighost.c.rh570851 bind-9.7.2b1/bin/dig/dighost.c
---- bind-9.7.2b1/bin/dig/dighost.c.rh570851	2010-08-10 12:55:14.219403986 +0200
-+++ bind-9.7.2b1/bin/dig/dighost.c	2010-08-10 12:56:40.716015777 +0200
-@@ -126,7 +126,8 @@ isc_boolean_t
- 	usesearch = ISC_FALSE,
+diff -up bind-9.9.5b1/bin/dig/dighost.c.rh570851 bind-9.9.5b1/bin/dig/dighost.c
+--- bind-9.9.5b1/bin/dig/dighost.c.rh570851	2014-01-06 13:49:25.230380554 +0100
++++ bind-9.9.5b1/bin/dig/dighost.c	2014-01-06 13:54:25.804839409 +0100
+@@ -131,6 +131,7 @@ isc_boolean_t
  	showsearch = ISC_FALSE,
  	qr = ISC_FALSE,
--	is_dst_up = ISC_FALSE;
-+	is_dst_up = ISC_FALSE,
-+	verbose = ISC_FALSE;
+ 	is_dst_up = ISC_FALSE,
++	verbose = ISC_FALSE,
+ 	keep_open = ISC_FALSE;
  in_port_t port = 53;
  unsigned int timeout = 0;
- unsigned int extrabytes;
-@@ -1240,10 +1241,24 @@ setup_system(void) {
+@@ -1257,10 +1258,24 @@ setup_system(void) {
  		}
  	}
  
@@ -36,10 +34,10 @@ diff -up bind-9.7.2b1/bin/dig/dighost.c.rh570851 bind-9.7.2b1/bin/dig/dighost.c
  
  	/* If user doesn't specify server use nameservers from resolv.conf. */
  	if (ISC_LIST_EMPTY(server_list))
-diff -up bind-9.7.2b1/bin/dig/host.c.rh570851 bind-9.7.2b1/bin/dig/host.c
---- bind-9.7.2b1/bin/dig/host.c.rh570851	2010-08-10 12:57:16.032758098 +0200
-+++ bind-9.7.2b1/bin/dig/host.c	2010-08-10 13:02:12.848559845 +0200
-@@ -659,6 +659,7 @@ parse_args(isc_boolean_t is_batchfile, i
+diff -up bind-9.9.5b1/bin/dig/host.c.rh570851 bind-9.9.5b1/bin/dig/host.c
+--- bind-9.9.5b1/bin/dig/host.c.rh570851	2013-12-12 06:59:59.000000000 +0100
++++ bind-9.9.5b1/bin/dig/host.c	2014-01-06 13:49:25.241380571 +0100
+@@ -672,6 +672,7 @@ parse_args(isc_boolean_t is_batchfile, i
  
  	lookup->servfail_stops = ISC_FALSE;
  	lookup->comments = ISC_FALSE;
@@ -47,7 +45,7 @@ diff -up bind-9.7.2b1/bin/dig/host.c.rh570851 bind-9.7.2b1/bin/dig/host.c
  
  	while ((c = isc_commandline_parse(argc, argv, optstring)) != -1) {
  		switch (c) {
-@@ -869,8 +870,8 @@ main(int argc, char **argv) {
+@@ -882,8 +883,8 @@ main(int argc, char **argv) {
  	result = isc_app_start();
  	check_result(result, "isc_app_start");
  	setup_libs();
@@ -57,10 +55,10 @@ diff -up bind-9.7.2b1/bin/dig/host.c.rh570851 bind-9.7.2b1/bin/dig/host.c
  	result = isc_app_onrun(mctx, global_task, onrun_callback, NULL);
  	check_result(result, "isc_app_onrun");
  	isc_app_run();
-diff -up bind-9.7.2b1/bin/dig/include/dig/dig.h.rh570851 bind-9.7.2b1/bin/dig/include/dig/dig.h
---- bind-9.7.2b1/bin/dig/include/dig/dig.h.rh570851	2010-08-10 13:02:32.722244088 +0200
-+++ bind-9.7.2b1/bin/dig/include/dig/dig.h	2010-08-10 13:02:48.465158159 +0200
-@@ -278,6 +278,7 @@ extern isc_boolean_t debugging, memdebug
+diff -up bind-9.9.5b1/bin/dig/include/dig/dig.h.rh570851 bind-9.9.5b1/bin/dig/include/dig/dig.h
+--- bind-9.9.5b1/bin/dig/include/dig/dig.h.rh570851	2013-12-12 06:59:59.000000000 +0100
++++ bind-9.9.5b1/bin/dig/include/dig/dig.h	2014-01-06 13:49:25.241380571 +0100
+@@ -281,6 +281,7 @@ extern isc_boolean_t keep_open;
  extern char *progname;
  extern int tries;
  extern int fatalexit;
@@ -68,9 +66,9 @@ diff -up bind-9.7.2b1/bin/dig/include/dig/dig.h.rh570851 bind-9.7.2b1/bin/dig/in
  #ifdef WITH_IDN
  extern int idnoptions;
  #endif
-diff -up bind-9.7.2b1/lib/lwres/include/lwres/lwres.h.rh570851 bind-9.7.2b1/lib/lwres/include/lwres/lwres.h
---- bind-9.7.2b1/lib/lwres/include/lwres/lwres.h.rh570851	2010-08-10 13:04:40.465780506 +0200
-+++ bind-9.7.2b1/lib/lwres/include/lwres/lwres.h	2010-08-10 13:05:57.559867830 +0200
+diff -up bind-9.9.5b1/lib/lwres/include/lwres/lwres.h.rh570851 bind-9.9.5b1/lib/lwres/include/lwres/lwres.h
+--- bind-9.9.5b1/lib/lwres/include/lwres/lwres.h.rh570851	2013-12-12 06:59:59.000000000 +0100
++++ bind-9.9.5b1/lib/lwres/include/lwres/lwres.h	2014-01-06 13:49:25.241380571 +0100
 @@ -243,6 +243,8 @@ typedef struct {
  	lwres_uint8_t	resdebug;      /*%< non-zero if 'options debug' set */
  	lwres_uint8_t	ndots;	       /*%< set to n in 'options ndots:n' */
@@ -80,9 +78,9 @@ diff -up bind-9.7.2b1/lib/lwres/include/lwres/lwres.h.rh570851 bind-9.7.2b1/lib/
  } lwres_conf_t;
  
  #define LWRES_ADDRTYPE_V4		0x00000001U	/*%< ipv4 */
-diff -up bind-9.7.2b1/lib/lwres/lwconfig.c.rh570851 bind-9.7.2b1/lib/lwres/lwconfig.c
---- bind-9.7.2b1/lib/lwres/lwconfig.c.rh570851	2010-08-10 13:06:08.051778429 +0200
-+++ bind-9.7.2b1/lib/lwres/lwconfig.c	2010-08-10 13:09:53.972555776 +0200
+diff -up bind-9.9.5b1/lib/lwres/lwconfig.c.rh570851 bind-9.9.5b1/lib/lwres/lwconfig.c
+--- bind-9.9.5b1/lib/lwres/lwconfig.c.rh570851	2013-12-12 06:59:59.000000000 +0100
++++ bind-9.9.5b1/lib/lwres/lwconfig.c	2014-01-06 13:49:25.241380571 +0100
 @@ -237,6 +237,8 @@ lwres_conf_init(lwres_context_t *ctx) {
  	confdata->resdebug = 0;
  	confdata->ndots = 1;
@@ -138,7 +136,7 @@ diff -up bind-9.7.2b1/lib/lwres/lwconfig.c.rh570851 bind-9.7.2b1/lib/lwres/lwcon
  		}
  
  		if (delim == EOF || delim == '\n')
-@@ -716,6 +736,12 @@ lwres_conf_print(lwres_context_t *ctx, F
+@@ -717,6 +737,12 @@ lwres_conf_print(lwres_context_t *ctx, F
  	if (confdata->no_tld_query)
  		fprintf(fp, "options no_tld_query\n");
  
diff --git a/bind99-ISC-Bugs-34738.patch b/bind99-ISC-Bugs-34738.patch
deleted file mode 100644
index c866ac4..0000000
--- a/bind99-ISC-Bugs-34738.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 18df9e628ea10c7d607f43fcfd935e7924731f24 Mon Sep 17 00:00:00 2001
-From: Evan Hunt <each@isc.org>
-Date: Mon, 9 Sep 2013 22:12:47 -0700
-Subject: [PATCH] [master] strdup journal filename
-
-3646.	[bug]		Journal filename string could be set incorrectly,
-                        causing garbage in log messages.  [RT #34738]
----
- lib/dns/journal.c | 12 +++++++++---
- 1 file changed, 9 insertions(+), 3 deletions(-)
-
-diff --git a/lib/dns/journal.c b/lib/dns/journal.c
-index 08aabd5..46a52e1 100644
---- a/lib/dns/journal.c
-+++ b/lib/dns/journal.c
-@@ -307,7 +307,7 @@ struct dns_journal {
- 	unsigned int		magic;		/*%< JOUR */
- 	isc_mem_t		*mctx;		/*%< Memory context */
- 	journal_state_t		state;
--	const char 		*filename;	/*%< Journal file name */
-+	char 			*filename;	/*%< Journal file name */
- 	FILE *			fp;		/*%< File handle */
- 	isc_offset_t		offset;		/*%< Current file offset */
- 	journal_header_t 	header;		/*%< In-core journal header */
-@@ -573,10 +573,13 @@ journal_open(isc_mem_t *mctx, const char *filename, isc_boolean_t write,
- 	isc_mem_attach(mctx, &j->mctx);
- 	j->state = JOURNAL_STATE_INVALID;
- 	j->fp = NULL;
--	j->filename = filename;
-+	j->filename = isc_mem_strdup(mctx, filename);
- 	j->index = NULL;
- 	j->rawindex = NULL;
- 
-+	if (j->filename == NULL)
-+		FAIL(ISC_R_NOMEMORY);
-+
- 	result = isc_stdio_open(j->filename, write ? "rb+" : "rb", &fp);
- 
- 	if (result == ISC_R_FILENOTFOUND) {
-@@ -679,6 +682,8 @@ journal_open(isc_mem_t *mctx, const char *filename, isc_boolean_t write,
- 			    sizeof(journal_rawpos_t));
- 		j->index = NULL;
- 	}
-+	if (j->filename != NULL)
-+		isc_mem_free(j->mctx, j->filename);
- 	if (j->fp != NULL)
- 		(void)isc_stdio_close(j->fp);
- 	isc_mem_putanddetach(&j->mctx, j, sizeof(*j));
-@@ -1242,7 +1247,8 @@ dns_journal_destroy(dns_journal_t **journalp) {
- 		isc_mem_put(j->mctx, j->it.target.base, j->it.target.length);
- 	if (j->it.source.base != NULL)
- 		isc_mem_put(j->mctx, j->it.source.base, j->it.source.length);
--
-+	if (j->filename != NULL)
-+		isc_mem_free(j->mctx, j->filename);
- 	if (j->fp != NULL)
- 		(void)isc_stdio_close(j->fp);
- 	j->magic = 0;
--- 
-1.8.3.1
-
diff --git a/bind99-ISC-Bugs-34870-v3.patch b/bind99-ISC-Bugs-34870-v3.patch
deleted file mode 100644
index 2869213..0000000
--- a/bind99-ISC-Bugs-34870-v3.patch
+++ /dev/null
@@ -1,213 +0,0 @@
-diff -up bind-9.9.4/bin/dig/dighost.c.send_buffers bind-9.9.4/bin/dig/dighost.c
---- bind-9.9.4/bin/dig/dighost.c.send_buffers	2013-10-31 14:22:20.296811613 +0100
-+++ bind-9.9.4/bin/dig/dighost.c	2013-10-31 14:57:00.336400190 +0100
-@@ -194,6 +194,7 @@ isc_boolean_t validated = ISC_TRUE;
- isc_entropy_t *entp = NULL;
- isc_mempool_t *commctx = NULL;
- isc_boolean_t debugging = ISC_FALSE;
-+isc_boolean_t debugtiming = ISC_FALSE;
- isc_boolean_t memdebugging = ISC_FALSE;
- char *progname = NULL;
- isc_mutex_t lookup_lock;
-@@ -553,6 +554,12 @@ debug(const char *format, ...) {
- 
- 	if (debugging) {
- 		fflush(stdout);
-+		if (debugtiming) {
-+			struct timeval tv;
-+			(void)gettimeofday(&tv, NULL);
-+			fprintf(stderr, "%ld.%06ld: ", (long)tv.tv_sec,
-+				(long)tv.tv_usec);
-+		}
- 		va_start(args, format);
- 		vfprintf(stderr, format, args);
- 		va_end(args);
-@@ -2416,8 +2423,10 @@ send_done(isc_task_t *_task, isc_event_t
- 
- 	for  (b = ISC_LIST_HEAD(sevent->bufferlist);
- 	      b != NULL;
--	      b = ISC_LIST_HEAD(sevent->bufferlist))
-+	      b = ISC_LIST_HEAD(sevent->bufferlist)) {
- 		ISC_LIST_DEQUEUE(sevent->bufferlist, b, link);
-+		isc_mem_free(mctx, b);
-+	}
- 
- 	query = event->ev_arg;
- 	query->waiting_senddone = ISC_FALSE;
-@@ -2609,6 +2618,17 @@ send_tcp_connect(dig_query_t *query) {
- 	}
- }
- 
-+static isc_buffer_t *
-+clone_buffer(isc_buffer_t *source) {
-+	isc_buffer_t *buffer;
-+	buffer = isc_mem_allocate(mctx, sizeof(*buffer));
-+	if (buffer == NULL)
-+		fatal("memory allocation failure in %s:%d",
-+		      __FILE__, __LINE__);
-+	*buffer = *source;
-+	return (buffer);
-+}
-+
- /*%
-  * Send a UDP packet to the remote nameserver, possible starting the
-  * recv action as well.  Also make sure that the timer is running and
-@@ -2618,6 +2638,7 @@ static void
- send_udp(dig_query_t *query) {
- 	dig_lookup_t *l = NULL;
- 	isc_result_t result;
-+	isc_buffer_t *sendbuf;
- 
- 	debug("send_udp(%p)", query);
- 
-@@ -2664,14 +2685,16 @@ send_udp(dig_query_t *query) {
- 		debug("recvcount=%d", recvcount);
- 	}
- 	ISC_LIST_INIT(query->sendlist);
--	ISC_LIST_ENQUEUE(query->sendlist, &query->sendbuf, link);
-+	sendbuf = clone_buffer(&query->sendbuf);
-+	ISC_LIST_ENQUEUE(query->sendlist, sendbuf, link);
- 	debug("sending a request");
- 	TIME_NOW(&query->time_sent);
- 	INSIST(query->sock != NULL);
- 	query->waiting_senddone = ISC_TRUE;
--	result = isc_socket_sendtov(query->sock, &query->sendlist,
--				    global_task, send_done, query,
--				    &query->sockaddr, NULL);
-+	result = isc_socket_sendtov2(query->sock, &query->sendlist,
-+				     global_task, send_done, query,
-+				     &query->sockaddr, NULL,
-+				     ISC_SOCKFLAG_NORETRY);
- 	check_result(result, "isc_socket_sendtov");
- 	sendcount++;
- }
-@@ -2838,6 +2861,7 @@ static void
- launch_next_query(dig_query_t *query, isc_boolean_t include_question) {
- 	isc_result_t result;
- 	dig_lookup_t *l;
-+	isc_buffer_t *buffer;
- 
- 	INSIST(!free_now);
- 
-@@ -2861,9 +2885,15 @@ launch_next_query(dig_query_t *query, is
- 	isc_buffer_putuint16(&query->slbuf, (isc_uint16_t) query->sendbuf.used);
- 	ISC_LIST_INIT(query->sendlist);
- 	ISC_LINK_INIT(&query->slbuf, link);
--	ISC_LIST_ENQUEUE(query->sendlist, &query->slbuf, link);
--	if (include_question)
--		ISC_LIST_ENQUEUE(query->sendlist, &query->sendbuf, link);
-+	if (!query->first_soa_rcvd) {
-+		buffer = clone_buffer(&query->slbuf);
-+		ISC_LIST_ENQUEUE(query->sendlist, buffer, link);
-+		if (include_question) {
-+			buffer = clone_buffer(&query->sendbuf);
-+			ISC_LIST_ENQUEUE(query->sendlist, buffer, link);
-+		}
-+	}
-+
- 	ISC_LINK_INIT(&query->lengthbuf, link);
- 	ISC_LIST_ENQUEUE(query->lengthlist, &query->lengthbuf, link);
- 
-diff -up bind-9.9.4/bin/dig/host.c.send_buffers bind-9.9.4/bin/dig/host.c
---- bind-9.9.4/bin/dig/host.c.send_buffers	2013-10-31 14:22:20.270811568 +0100
-+++ bind-9.9.4/bin/dig/host.c	2013-10-31 14:22:20.328811669 +0100
-@@ -638,6 +638,8 @@ pre_parse_args(int argc, char **argv) {
- 		case 'w': break;
- 		case 'C': break;
- 		case 'D':
-+			if (debugging)
-+				debugtiming = ISC_TRUE;
- 			debugging = ISC_TRUE;
- 			break;
- 		case 'N': break;
-diff -up bind-9.9.4/bin/dig/include/dig/dig.h.send_buffers bind-9.9.4/bin/dig/include/dig/dig.h
---- bind-9.9.4/bin/dig/include/dig/dig.h.send_buffers	2013-10-31 14:22:20.270811568 +0100
-+++ bind-9.9.4/bin/dig/include/dig/dig.h	2013-10-31 14:22:20.328811669 +0100
-@@ -275,7 +275,7 @@ extern isc_boolean_t validated;
- extern isc_taskmgr_t *taskmgr;
- extern isc_task_t *global_task;
- extern isc_boolean_t free_now;
--extern isc_boolean_t debugging, memdebugging;
-+extern isc_boolean_t debugging, debugtiming, memdebugging;
- 
- extern char *progname;
- extern int tries;
-diff -up bind-9.9.4/lib/isc/include/isc/namespace.h.send_buffers bind-9.9.4/lib/isc/include/isc/namespace.h
---- bind-9.9.4/lib/isc/include/isc/namespace.h.send_buffers	2013-09-05 07:09:08.000000000 +0200
-+++ bind-9.9.4/lib/isc/include/isc/namespace.h	2013-10-31 14:22:20.328811669 +0100
-@@ -106,6 +106,7 @@
- #define isc_socket_sendv isc__socket_sendv
- #define isc_socket_sendtov isc__socket_sendtov
- #define isc_socket_sendto2 isc__socket_sendto2
-+#define isc_socket_sendtov2 isc__socket_sendtov2
- #define isc_socket_cleanunix isc__socket_cleanunix
- #define isc_socket_permunix isc__socket_permunix
- #define isc_socket_bind isc__socket_bind
-diff -up bind-9.9.4/lib/isc/include/isc/socket.h.send_buffers bind-9.9.4/lib/isc/include/isc/socket.h
---- bind-9.9.4/lib/isc/include/isc/socket.h.send_buffers	2013-09-05 07:09:08.000000000 +0200
-+++ bind-9.9.4/lib/isc/include/isc/socket.h	2013-10-31 14:22:20.328811669 +0100
-@@ -866,6 +866,11 @@ isc_socket_sendtov(isc_socket_t *sock, i
- 		   isc_task_t *task, isc_taskaction_t action, const void *arg,
- 		   isc_sockaddr_t *address, struct in6_pktinfo *pktinfo);
- isc_result_t
-+isc_socket_sendtov2(isc_socket_t *sock, isc_bufferlist_t *buflist,
-+		    isc_task_t *task, isc_taskaction_t action, const void *arg,
-+		    isc_sockaddr_t *address, struct in6_pktinfo *pktinfo,
-+		    unsigned int flags);
-+isc_result_t
- isc_socket_sendto2(isc_socket_t *sock, isc_region_t *region,
- 		   isc_task_t *task,
- 		   isc_sockaddr_t *address, struct in6_pktinfo *pktinfo,
-diff -up bind-9.9.4/lib/isc/unix/socket.c.send_buffers bind-9.9.4/lib/isc/unix/socket.c
---- bind-9.9.4/lib/isc/unix/socket.c.send_buffers	2013-10-31 14:22:20.293811608 +0100
-+++ bind-9.9.4/lib/isc/unix/socket.c	2013-10-31 14:22:20.330811673 +0100
-@@ -510,6 +510,11 @@ isc__socket_sendtov(isc_socket_t *sock,
- 		    isc_task_t *task, isc_taskaction_t action, const void *arg,
- 		    isc_sockaddr_t *address, struct in6_pktinfo *pktinfo);
- ISC_SOCKETFUNC_SCOPE isc_result_t
-+isc__socket_sendtov2(isc_socket_t *sock, isc_bufferlist_t *buflist,
-+		     isc_task_t *task, isc_taskaction_t action, const void *arg,
-+		     isc_sockaddr_t *address, struct in6_pktinfo *pktinfo,
-+		     unsigned int flags);
-+ISC_SOCKETFUNC_SCOPE isc_result_t
- isc__socket_sendto2(isc_socket_t *sock, isc_region_t *region,
- 		    isc_task_t *task,
- 		    isc_sockaddr_t *address, struct in6_pktinfo *pktinfo,
-@@ -4796,15 +4801,25 @@ ISC_SOCKETFUNC_SCOPE isc_result_t
- isc__socket_sendv(isc_socket_t *sock, isc_bufferlist_t *buflist,
- 		  isc_task_t *task, isc_taskaction_t action, const void *arg)
- {
--	return (isc__socket_sendtov(sock, buflist, task, action, arg, NULL,
--				    NULL));
-+	return (isc__socket_sendtov2(sock, buflist, task, action, arg, NULL,
-+				     NULL, 0));
- }
- 
- ISC_SOCKETFUNC_SCOPE isc_result_t
--isc__socket_sendtov(isc_socket_t *sock0, isc_bufferlist_t *buflist,
-+isc__socket_sendtov(isc_socket_t *sock, isc_bufferlist_t *buflist,
- 		    isc_task_t *task, isc_taskaction_t action, const void *arg,
- 		    isc_sockaddr_t *address, struct in6_pktinfo *pktinfo)
- {
-+	return (isc__socket_sendtov2(sock, buflist, task, action, arg, address,
-+				     pktinfo, 0));
-+}
-+
-+ISC_SOCKETFUNC_SCOPE isc_result_t
-+isc__socket_sendtov2(isc_socket_t *sock0, isc_bufferlist_t *buflist,
-+		     isc_task_t *task, isc_taskaction_t action, const void *arg,
-+		     isc_sockaddr_t *address, struct in6_pktinfo *pktinfo,
-+		     unsigned int flags)
-+{
- 	isc__socket_t *sock = (isc__socket_t *)sock0;
- 	isc_socketevent_t *dev;
- 	isc__socketmgr_t *manager;
-@@ -4837,7 +4852,7 @@ isc__socket_sendtov(isc_socket_t *sock0,
- 		buffer = ISC_LIST_HEAD(*buflist);
- 	}
- 
--	return (socket_send(sock, dev, task, address, pktinfo, 0));
-+	return (socket_send(sock, dev, task, address, pktinfo, flags));
- }
- 
- ISC_SOCKETFUNC_SCOPE isc_result_t
diff --git a/bind99-ISC-Bugs-35073.patch b/bind99-ISC-Bugs-35073.patch
deleted file mode 100644
index c8be3ed..0000000
--- a/bind99-ISC-Bugs-35073.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-diff --git a/bin/nsupdate/nsupdate.c b/bin/nsupdate/nsupdate.c
-index 486c102..dc12a85 100644
---- a/bin/nsupdate/nsupdate.c
-+++ b/bin/nsupdate/nsupdate.c
-@@ -1566,16 +1566,20 @@ evaluate_realm(char *cmdline) {
- #ifdef GSSAPI
- 	char *word;
- 	char buf[1024];
-+	int n;
- 
--	word = nsu_strsep(&cmdline, " \t\r\n");
--	if (word == NULL || *word == 0) {
--		if (realm != NULL)
--			isc_mem_free(mctx, realm);
-+	if (realm != NULL) {
-+		isc_mem_free(mctx, realm);
- 		realm = NULL;
--		return (STATUS_MORE);
- 	}
- 
--	snprintf(buf, sizeof(buf), "@%s", word);
-+	word = nsu_strsep(&cmdline, " \t\r\n");
-+	if (word == NULL || *word == 0)
-+		return (STATUS_MORE);
-+
-+	n = snprintf(buf, sizeof(buf), "@%s", word);
-+	if (n < 0 || (size_t)n >= sizeof(buf))
-+		fatal("realm is too long");
- 	realm = isc_mem_strdup(mctx, buf);
- 	if (realm == NULL)
- 		fatal("out of memory");
diff --git a/sources b/sources
index 120c42b..310e200 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-f69757adc86776daed8e5acb0ee7c0ca  bind-9.9.4.tar.gz
+850e8f02cb5db1253114bca560bf3fe7  bind-9.9.5b1.tar.gz
 e4315fdea56983570d3a33702e925088  config-12.tar.bz2