 -int
 -main(int argc, char *argv[]) {
 -	isc_result_t result;
-+int main(int argc, char *argv[]) {
++int main(int argc, char* argv[])
++{
 +    if (!getenv("NO_FUZZ")) {
 +        named_g_fuzz_addr = "127.0.0.1:53";
 +        named_g_fuzz_type = isc_fuzz_client;

 		tcp = true;
 	share = (options & DNS_REQUESTOPT_SHARE);
 
@@ -1042,6 +1042,8 @@
 req_render(dns_message_t *message, isc_buffer_t **bufferp,
 	   unsigned int options, isc_mem_t *mctx)
 {
+	options |= DNS_REQUESTOPT_TCP;
+
 	isc_buffer_t *buf1 = NULL;
 	isc_buffer_t *buf2 = NULL;
 	isc_result_t result;
@@ -1100,7 +1102,7 @@
 	isc_buffer_usedregion(buf1, &r);
 	if ((options & DNS_REQUESTOPT_TCP) != 0) {
 		tcp = true;
-	} else if (r.length > 512) {
+	} else if (r.length >= 0) {
 		result = DNS_R_USETCP;
 		goto cleanup;
 	}
diff -Nur ORIG.bind-9.14.1/lib/dns/resolver.c bind-9.14.1/lib/dns/resolver.c
--- ORIG.bind-9.14.1/lib/dns/resolver.c	2019-04-06 22:09:59.000000000 +0200
+++ bind-9.14.1/lib/dns/resolver.c	2019-05-09 16:09:56.135889307 +0200
@@ -1952,6 +1952,7 @@
 	}
 	query->mctx = fctx->mctx;
 	query->options = options;
+	query->options = options | DNS_FETCHOPT_TCP;
 	query->attributes = 0;
 	query->sends = 0;
 	query->connects = 0;
diff -Nur ORIG.bind-9.14.1/lib/isc/random.c bind-9.14.1/lib/isc/random.c
--- ORIG.bind-9.14.1/lib/isc/random.c	2019-04-06 22:09:59.000000000 +0200
+++ bind-9.14.1/lib/isc/random.c	2019-05-09 16:09:56.135889307 +0200
@@ -96,6 +96,7 @@
 isc_random8(void) {
 	RUNTIME_CHECK(isc_once_do(&isc_random_once,

+
+make clean
+make -j$(nproc)
diff -Nur ORIG.bind-9.14.1/lib/dns/request.c bind-9.14.1/lib/dns/request.c
--- ORIG.bind-9.14.1/lib/dns/request.c	2019-04-06 22:09:59.000000000 +0200
+++ bind-9.14.1/lib/dns/request.c	2019-05-09 16:26:27.615239219 +0200
@@ -760,7 +760,7 @@
 		goto cleanup;
 	}
