diff --git a/CuteDNS.files b/CuteDNS.files
index 3e3502072a96ccb4df225b5a52e5e40a86ddb362..73718128a13fd61a4da1829e30f37759badae416 100644
--- a/CuteDNS.files
+++ b/CuteDNS.files
@@ -63,6 +63,8 @@ src/dnslib/debug.h
 src/dnslib/debug.c
 src/dnslib/dnslib.h
 src/dnslib/tolower.h
+src/dnslib/nsec3.h
+src/dnslib/nsec3.c
 src/dnslib/zone-dump.c
 src/dnslib/zone-dump.h
 src/dnslib/zone-load.c
diff --git a/src/server/server.c b/src/server/server.c
index efef0f7a15c14a3db7eeb2c558db86e75c116a41..c0ac3a5536b57d68086b534213d2b90ba67d65c6 100644
--- a/src/server/server.c
+++ b/src/server/server.c
@@ -3,6 +3,8 @@
 #include <stdlib.h>
 
 #include <gnutls/gnutls.h>
+#include <gcrypt.h>
+#include <errno.h>
 
 #include "debug.h"
 #include "server.h"
@@ -15,6 +17,8 @@
 #include "dnslib/debug.h"
 #include "dnslib/dname.h"
 
+GCRY_THREAD_OPTION_PTHREAD_IMPL;
+
 cute_server *cute_create()
 {
 	// Create TCP+UDP sockets
@@ -65,6 +69,7 @@ cute_server *cute_create()
 	debug_server("Initializing GnuTLS...\n");
 
 	int res = 0;
+	gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
 	if ((res = gnutls_global_init()) != GNUTLS_E_SUCCESS) {
 		log_error("Failed to initalize GnuTLS.\n");
 		ns_destroy(&server->nameserver);