diff --git a/quiche/quic/core/http/quic_spdy_stream_test.cc b/quiche/quic/core/http/quic_spdy_stream_test.cc
index 95e3ffb..575a64f 100644
--- a/quiche/quic/core/http/quic_spdy_stream_test.cc
+++ b/quiche/quic/core/http/quic_spdy_stream_test.cc
@@ -3325,7 +3325,7 @@
   EXPECT_EQ(stream_->web_transport()->GetNegotiatedSubprotocol(), "moqt-01");
 }
 
-TEST_P(QuicSpdyStreamTest, WebTransportRejectSubprotocolsThatWereNotOffered) {
+TEST_P(QuicSpdyStreamTest, WebTransportIgnoreSubprotocolsThatWereNotOffered) {
   if (!UsesHttp3()) {
     return;
   }
@@ -3354,7 +3354,7 @@
   response_headers["wt-protocol"] = "\"moqt-02\"";
   stream_->web_transport()->HeadersReceived(response_headers);
   EXPECT_EQ(stream_->web_transport()->rejection_reason(),
-            WebTransportHttp3RejectionReason::kSubprotocolMismatch);
+            WebTransportHttp3RejectionReason::kNone);
   EXPECT_EQ(stream_->web_transport()->GetNegotiatedSubprotocol(), std::nullopt);
 }
 
@@ -3387,7 +3387,7 @@
   response_headers["wt-protocol"] = "12345.67";
   stream_->web_transport()->HeadersReceived(response_headers);
   EXPECT_EQ(stream_->web_transport()->rejection_reason(),
-            WebTransportHttp3RejectionReason::kSubprotocolParseError);
+            WebTransportHttp3RejectionReason::kNone);
   EXPECT_EQ(stream_->web_transport()->GetNegotiatedSubprotocol(), std::nullopt);
 }
 
diff --git a/quiche/quic/core/http/web_transport_http3.cc b/quiche/quic/core/http/web_transport_http3.cc
index 86d6086..e2d1466 100644
--- a/quiche/quic/core/http/web_transport_http3.cc
+++ b/quiche/quic/core/http/web_transport_http3.cc
@@ -188,12 +188,7 @@
       rejection_reason_ = WebTransportHttp3RejectionReason::kWrongStatusCode;
       return;
     }
-    WebTransportHttp3RejectionReason subprotocol_result =
-        MaybeSetSubprotocolFromResponseHeaders(headers);
-    if (subprotocol_result != WebTransportHttp3RejectionReason::kNone) {
-      rejection_reason_ = subprotocol_result;
-      return;
-    }
+    MaybeSetSubprotocolFromResponseHeaders(headers);
   }
 
   QUIC_DVLOG(1) << ENDPOINT << "WebTransport session " << id_ << " ready.";
@@ -483,12 +478,11 @@
          webtransport_error_code / 0x1e;
 }
 
-WebTransportHttp3RejectionReason
-WebTransportHttp3::MaybeSetSubprotocolFromResponseHeaders(
+void WebTransportHttp3::MaybeSetSubprotocolFromResponseHeaders(
     const quiche::HttpHeaderBlock& headers) {
   auto subprotocol_it = headers.find(webtransport::kSubprotocolResponseHeader);
   if (subprotocol_it == headers.end()) {
-    return WebTransportHttp3RejectionReason::kNone;
+    return;
   }
 
   absl::StatusOr<std::string> subprotocol =
@@ -496,8 +490,8 @@
   if (!subprotocol.ok()) {
     QUIC_DVLOG(1) << ENDPOINT
                   << "WebTransport server has malformed WT-Protocol "
-                     "header, rejecting.";
-    return WebTransportHttp3RejectionReason::kSubprotocolParseError;
+                     "header, ignoring.";
+    return;
   }
 
   if (session_->perspective() == Perspective::IS_CLIENT &&
@@ -505,12 +499,11 @@
     QUIC_DVLOG(1) << ENDPOINT
                   << "WebTransport server has offered a subprotocol value \""
                   << *subprotocol
-                  << "\", which was not one of the ones offered, rejecting.";
-    return WebTransportHttp3RejectionReason::kSubprotocolMismatch;
+                  << "\", which was not one of the ones offered, ignoring.";
+    return;
   }
 
   subprotocol_selected_ = *std::move(subprotocol);
-  return WebTransportHttp3RejectionReason::kNone;
 }
 
 }  // namespace quic
diff --git a/quiche/quic/core/http/web_transport_http3.h b/quiche/quic/core/http/web_transport_http3.h
index 789dc52..a360986 100644
--- a/quiche/quic/core/http/web_transport_http3.h
+++ b/quiche/quic/core/http/web_transport_http3.h
@@ -38,8 +38,6 @@
   kWrongStatusCode,
   kMissingDraftVersion,
   kUnsupportedDraftVersion,
-  kSubprotocolMismatch,
-  kSubprotocolParseError,
 };
 
 // A session of WebTransport over HTTP/3.  The session is owned by
@@ -132,7 +130,7 @@
   std::optional<std::string> GetNegotiatedSubprotocol() const override {
     return subprotocol_selected_;
   }
-  WebTransportHttp3RejectionReason MaybeSetSubprotocolFromResponseHeaders(
+  void MaybeSetSubprotocolFromResponseHeaders(
       const quiche::HttpHeaderBlock& headers);
 
  private:
