diff --git a/http2/adapter/header_validator.cc b/http2/adapter/header_validator.cc
index 7cf9220..0122018 100644
--- a/http2/adapter/header_validator.cc
+++ b/http2/adapter/header_validator.cc
@@ -92,9 +92,8 @@
       return ValidateResponseHeaders(pseudo_headers_);
     case HeaderType::RESPONSE_TRAILER:
       return ValidateResponseTrailers(pseudo_headers_);
-    default:
-      return false;
   }
+  return false;
 }
 
 }  // namespace adapter
diff --git a/http2/adapter/http2_util.cc b/http2/adapter/http2_util.cc
index 138bde7..efca530 100644
--- a/http2/adapter/http2_util.cc
+++ b/http2/adapter/http2_util.cc
@@ -1,5 +1,7 @@
 #include "http2/adapter/http2_util.h"
 
+#include "spdy/core/spdy_protocol.h"
+
 namespace http2 {
 namespace adapter {
 namespace {
@@ -40,6 +42,7 @@
     case Http2ErrorCode::HTTP_1_1_REQUIRED:
       return spdy::ERROR_CODE_HTTP_1_1_REQUIRED;
   }
+  return spdy::ERROR_CODE_INTERNAL_ERROR;
 }
 
 Http2ErrorCode TranslateErrorCode(spdy::SpdyErrorCode code) {
@@ -73,6 +76,7 @@
     case spdy::ERROR_CODE_HTTP_1_1_REQUIRED:
       return Http2ErrorCode::HTTP_1_1_REQUIRED;
   }
+  return Http2ErrorCode::INTERNAL_ERROR;
 }
 
 absl::string_view ConnectionErrorToString(ConnectionError error) {
@@ -92,6 +96,7 @@
     case ConnectionError::kInvalidPushPromise:
       return "InvalidPushPromise";
   }
+  return "UnknownConnectionError";
 }
 
 absl::string_view InvalidFrameErrorToString(
@@ -110,8 +115,7 @@
     case InvalidFrameError::kStreamClosed:
       return "StreamClosed";
   }
-  QUICHE_LOG(ERROR) << "Unknown InvalidFrameError " << static_cast<int>(error);
-  return "UnknownError";
+  return "UnknownInvalidFrameError";
 }
 
 }  // namespace adapter
diff --git a/http2/adapter/nghttp2_callbacks.cc b/http2/adapter/nghttp2_callbacks.cc
index 8564d6a..9e04158 100644
--- a/http2/adapter/nghttp2_callbacks.cc
+++ b/http2/adapter/nghttp2_callbacks.cc
@@ -178,10 +178,9 @@
       return NGHTTP2_ERR_CALLBACK_FAILURE;
     case Http2VisitorInterface::HEADER_RST_STREAM:
       return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
-    default:
-      // Unexpected value.
-      return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
   }
+  // Unexpected value.
+  return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
 }
 
 int OnBeforeFrameSent(nghttp2_session* /* session */,
diff --git a/http2/adapter/nghttp2_util.cc b/http2/adapter/nghttp2_util.cc
index 65ee06b..2d0171c 100644
--- a/http2/adapter/nghttp2_util.cc
+++ b/http2/adapter/nghttp2_util.cc
@@ -139,7 +139,6 @@
     case InvalidFrameError::kStreamClosed:
       return NGHTTP2_ERR_STREAM_CLOSED;
   }
-  QUICHE_LOG(ERROR) << "Unknown InvalidFrameError " << static_cast<int>(error);
   return NGHTTP2_ERR_PROTO;
 }
 
@@ -158,7 +157,6 @@
     case NGHTTP2_ERR_STREAM_CLOSED:
       return InvalidFrameError::kStreamClosed;
   }
-  QUICHE_LOG(ERROR) << "Unknown error " << error;
   return InvalidFrameError::kProtocol;
 }
 
diff --git a/http2/adapter/oghttp2_session.cc b/http2/adapter/oghttp2_session.cc
index ed16f04..7c8790d 100644
--- a/http2/adapter/oghttp2_session.cc
+++ b/http2/adapter/oghttp2_session.cc
@@ -131,6 +131,7 @@
     case Perspective::kServer:
       return "OGHTTP2_SERVER";
   }
+  return "OGHTTP2_SERVER";
 }
 
 class RunOnExit {
@@ -186,6 +187,7 @@
     case SpdyFramerError::LAST_ERROR:
       return Http2ErrorCode::INTERNAL_ERROR;
   }
+  return Http2ErrorCode::INTERNAL_ERROR;
 }
 
 }  // namespace
