瀏覽代碼

Treat response is completed if EOF is received before streamFilter completes

Tatsuhiro Tsujikawa 12 年之前
父節點
當前提交
4410f0e56c
共有 1 個文件被更改,包括 9 次插入5 次删除
  1. 9 5
      src/HttpSkipResponseCommand.cc

+ 9 - 5
src/HttpSkipResponseCommand.cc

@@ -148,13 +148,17 @@ bool HttpSkipResponseCommand::executeInternal()
     return processResponse();
   }
 
+  if(eof) {
+    // we may get EOF before non-sink streamFilter reports its
+    // completion. There are some broken servers to prevent
+    // streamFilter from completion. Since we just discard the
+    // response body anyway, so we assume that the response is
+    // completed.
+    return processResponse();
+  }
   bool finished = false;
   if(sinkFilterOnly_) {
-    if(eof) {
-      return processResponse();
-    } else {
-      finished = (totalLength_ == receivedBytes_);
-    }
+    finished = (totalLength_ == receivedBytes_);
   } else {
     finished = streamFilter_->finished();
   }