diff --git a/lib/d/src/thrift/internal/socket.d b/lib/d/src/thrift/internal/socket.d
index 43e1ca8..6ca0a97 100644
--- a/lib/d/src/thrift/internal/socket.d
+++ b/lib/d/src/thrift/internal/socket.d
@@ -44,7 +44,7 @@
   enum WSAENOTCONN = 10057;
   enum WSAETIMEDOUT = 10060;
 } else {
-  import core.stdc.errno : getErrno, EAGAIN, ECONNRESET, EINPROGRESS, EINTR,
+  import core.stdc.errno : errno, EAGAIN, ECONNRESET, EINPROGRESS, EINTR,
     ENOTCONN, EPIPE;
   import core.stdc.string : strerror;
 }
@@ -71,7 +71,7 @@
     return (errno == WSAECONNRESET || errno == WSAENOTCONN);
   }
 } else {
-  alias getErrno getSocketErrno;
+  alias errno getSocketErrno;
   enum CONNECT_INPROGRESS_ERRNO = EINPROGRESS;
   enum INTERRUPTED_ERRNO = EINTR;
   enum WOULD_BLOCK_ERRNO = EAGAIN;
diff --git a/lib/d/src/thrift/internal/ssl.d b/lib/d/src/thrift/internal/ssl.d
index 47a7cde..63a0a2b 100644
--- a/lib/d/src/thrift/internal/ssl.d
+++ b/lib/d/src/thrift/internal/ssl.d
@@ -20,7 +20,7 @@
 
 import core.memory : GC;
 import core.stdc.config;
-import core.stdc.errno : getErrno;
+import core.stdc.errno : errno;
 import core.stdc.string : strerror;
 import deimos.openssl.err;
 import deimos.openssl.ssl;
@@ -188,7 +188,7 @@
   }
   initMessage();
 
-  auto errn = getErrno();
+  auto errn = errno;
 
   const(char)* file = void;
   int line = void;
diff --git a/lib/d/src/thrift/protocol/base.d b/lib/d/src/thrift/protocol/base.d
index 809c847..97cbb4d 100644
--- a/lib/d/src/thrift/protocol/base.d
+++ b/lib/d/src/thrift/protocol/base.d
@@ -253,7 +253,7 @@
 /**
  * Skips a field of the given type on the protocol.
  *
- * The main purpose of skip() is to allow treating struct and cotainer types,
+ * The main purpose of skip() is to allow treating struct and container types,
  * (where multiple primitive types have to be skipped) the same as scalar types
  * in generated code.
  */
@@ -322,6 +322,9 @@
       }
       prot.readSetEnd();
       break;
+    case TType.STOP: goto case;
+    case TType.VOID:
+      assert(false, "Invalid field type passed.");
   }
 }
 
diff --git a/lib/d/src/thrift/protocol/compact.d b/lib/d/src/thrift/protocol/compact.d
index 5122f61..e970fd1 100644
--- a/lib/d/src/thrift/protocol/compact.d
+++ b/lib/d/src/thrift/protocol/compact.d
@@ -475,6 +475,8 @@
         return CType.SET;
       case TType.LIST:
         return CType.LIST;
+      case TType.VOID:
+        assert(false, "Invalid type passed.");
     }
   }
 
diff --git a/lib/d/src/thrift/protocol/json.d b/lib/d/src/thrift/protocol/json.d
index 7d35ba2..e89aee1 100644
--- a/lib/d/src/thrift/protocol/json.d
+++ b/lib/d/src/thrift/protocol/json.d
@@ -847,6 +847,9 @@
         return "lst";
       case TType.SET:
         return "set";
+      case TType.STOP: goto case;
+      case TType.VOID:
+        assert(false, "Invalid type passed.");
     }
   }
 
diff --git a/lib/d/src/thrift/server/transport/socket.d b/lib/d/src/thrift/server/transport/socket.d
index 0cbca41..e66d80e 100644
--- a/lib/d/src/thrift/server/transport/socket.d
+++ b/lib/d/src/thrift/server/transport/socket.d
@@ -284,7 +284,7 @@
 
   // Turn linger off to avoid blocking on socket close.
   try {
-    linger l;
+    Linger l;
     l.on = 0;
     l.time = 0;
     socket.setOption(lvlSock, SocketOption.LINGER, l);
diff --git a/lib/d/src/thrift/transport/socket.d b/lib/d/src/thrift/transport/socket.d
index 2b252c2..38b567a 100644
--- a/lib/d/src/thrift/transport/socket.d
+++ b/lib/d/src/thrift/transport/socket.d
@@ -158,7 +158,7 @@
   void setSocketOpts() {
     try {
       alias SocketOptionLevel.SOCKET lvlSock;
-      linger l;
+      Linger l;
       l.on = 0;
       l.time = 0;
       socket_.setOption(lvlSock, SocketOption.LINGER, l);
@@ -438,7 +438,7 @@
         socket_.setOption(SocketOptionLevel.SOCKET, type, value);
       } catch (SocketException e) {
         throw new TTransportException(
-          "Could not set send timeout: " ~ socketErrnoString(e.errorCode),
+          "Could not set timeout.",
           TTransportException.Type.UNKNOWN,
           __FILE__,
           __LINE__,
diff --git a/lib/d/src/thrift/transport/ssl.d b/lib/d/src/thrift/transport/ssl.d
index da0eb27..c1eab25 100644
--- a/lib/d/src/thrift/transport/ssl.d
+++ b/lib/d/src/thrift/transport/ssl.d
@@ -23,7 +23,7 @@
 module thrift.transport.ssl;
 
 import core.exception : onOutOfMemoryError;
-import core.stdc.errno : getErrno, EINTR;
+import core.stdc.errno : errno, EINTR;
 import core.sync.mutex : Mutex;
 import core.memory : GC;
 import core.stdc.config;
@@ -149,7 +149,7 @@
       bytes = SSL_read(ssl_, buf.ptr, cast(int)buf.length);
       if (bytes >= 0) break;
 
-      auto errnoCopy = getErrno();
+      auto errnoCopy = errno;
       if (SSL_get_error(ssl_, bytes) == SSL_ERROR_SYSCALL) {
         if (ERR_get_error() == 0 && errnoCopy == EINTR) {
           // FIXME: Windows.
diff --git a/lib/d/src/thrift/util/hashset.d b/lib/d/src/thrift/util/hashset.d
index 127374b..5ef97f9 100644
--- a/lib/d/src/thrift/util/hashset.d
+++ b/lib/d/src/thrift/util/hashset.d
@@ -141,5 +141,5 @@
 
   void delegate() dg;
   auto b = hashSet(dg);
-  enforce(b.toString() == "thrift.util.hashset.HashSet!(void delegate()).HashSet");
+  static assert(__traits(compiles, b.toString()));
 }
