Imported Upstream version 1.46.0
[platform/upstream/nghttp2.git] / src / shrpx_https_upstream.cc
index 34a5504..d9bef5e 100644 (file)
@@ -559,8 +559,7 @@ int htp_msg_completecb(llhttp_t *htp) {
       // signal_write() to run on_write().
       return HPE_PAUSED;
     }
-    llhttp_set_error_reason(htp, "could not finish request body");
-    return HPE_USER;
+    return -1;
   }
 
   if (handler->get_http2_upgrade_allowed() &&
@@ -748,6 +747,13 @@ int HttpsUpstream::on_write() {
       handler_->repeat_read_timer();
 
       return resume_read(SHRPX_NO_BUFFER, nullptr, 0);
+    } else {
+      // If the request is not complete, close the connection.
+      delete_downstream();
+
+      handler_->set_should_close_after_write(true);
+
+      return 0;
     }
   }
 
@@ -1049,18 +1055,6 @@ std::unique_ptr<Downstream> HttpsUpstream::pop_downstream() {
   return std::unique_ptr<Downstream>(downstream_.release());
 }
 
-namespace {
-void write_altsvc(DefaultMemchunks *buf, BlockAllocator &balloc,
-                  const AltSvc &altsvc) {
-  buf->append(util::percent_encode_token(balloc, altsvc.protocol_id));
-  buf->append("=\"");
-  buf->append(util::quote_string(balloc, altsvc.host));
-  buf->append(':');
-  buf->append(altsvc.service);
-  buf->append('"');
-}
-} // namespace
-
 int HttpsUpstream::on_downstream_header_complete(Downstream *downstream) {
   if (LOG_ENABLED(INFO)) {
     if (downstream->get_non_final_response()) {
@@ -1219,13 +1213,7 @@ int HttpsUpstream::on_downstream_header_complete(Downstream *downstream) {
     // We won't change or alter alt-svc from backend for now
     if (!httpconf.altsvcs.empty()) {
       buf->append("Alt-Svc: ");
-
-      auto &altsvcs = httpconf.altsvcs;
-      write_altsvc(buf, downstream->get_block_allocator(), altsvcs[0]);
-      for (size_t i = 1; i < altsvcs.size(); ++i) {
-        buf->append(", ");
-        write_altsvc(buf, downstream->get_block_allocator(), altsvcs[i]);
-      }
+      buf->append(httpconf.altsvc_header_value);
       buf->append("\r\n");
     }
   }