Browse Source

Fix problem caused by #1975

yhirose 1 year ago
parent
commit
412ba04d19
2 changed files with 14 additions and 11 deletions
  1. 13 11
      httplib.h
  2. 1 0
      test/test.cc

+ 13 - 11
httplib.h

@@ -7702,24 +7702,26 @@ inline bool ClientImpl::write_request(Stream &strm, Request &req,
 
   if (!req.has_header("Accept")) { req.set_header("Accept", "*/*"); }
 
-  if (!req.has_header("Accept-Encoding")) {
-    std::string accept_encoding;
+  if (!req.content_receiver) {
+    if (!req.has_header("Accept-Encoding")) {
+      std::string accept_encoding;
 #ifdef CPPHTTPLIB_BROTLI_SUPPORT
-    accept_encoding = "br";
+      accept_encoding = "br";
 #endif
 #ifdef CPPHTTPLIB_ZLIB_SUPPORT
-    if (!accept_encoding.empty()) { accept_encoding += ", "; }
-    accept_encoding += "gzip, deflate";
+      if (!accept_encoding.empty()) { accept_encoding += ", "; }
+      accept_encoding += "gzip, deflate";
 #endif
-    req.set_header("Accept-Encoding", accept_encoding);
-  }
+      req.set_header("Accept-Encoding", accept_encoding);
+    }
 
 #ifndef CPPHTTPLIB_NO_DEFAULT_USER_AGENT
-  if (!req.has_header("User-Agent")) {
-    auto agent = std::string("cpp-httplib/") + CPPHTTPLIB_VERSION;
-    req.set_header("User-Agent", agent);
-  }
+    if (!req.has_header("User-Agent")) {
+      auto agent = std::string("cpp-httplib/") + CPPHTTPLIB_VERSION;
+      req.set_header("User-Agent", agent);
+    }
 #endif
+  };
 
   if (req.body.empty()) {
     if (req.content_provider_) {

+ 1 - 0
test/test.cc

@@ -5609,6 +5609,7 @@ TEST(LongPollingTest, ClientCloseDetection) {
           auto count = 10;
           while (count > 0 && sink.is_writable()) {
             this_thread::sleep_for(chrono::milliseconds(10));
+            count--;
           }
           EXPECT_FALSE(sink.is_writable()); // the socket is closed
           return true;