summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@yahoo.com>2017-08-09 21:11:30 +0200
committerJoel Klinghed <the_jk@yahoo.com>2017-08-09 21:11:30 +0200
commit572d9ba729e12708deed0a6156209bbdc28698af (patch)
tree9df7ee3af1331ffe78fcddba04ebb1eb67a3e03f /src
parent582cf3f5efab85a6316cb5936d529ffa78cb3f4e (diff)
Handle HEAD requests over https
Responses to HEAD requests are always empty
Diffstat (limited to 'src')
-rw-r--r--src/proxy.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/proxy.cc b/src/proxy.cc
index c67b0df..70a14cd 100644
--- a/src/proxy.cc
+++ b/src/proxy.cc
@@ -10,6 +10,7 @@
#include <cerrno>
#include <chrono>
#include <cstring>
+#include <deque>
#include <fcntl.h>
#include <memory>
#include <netdb.h>
@@ -342,6 +343,7 @@ private:
bool first_remote_;
NewPackageIdCallback const new_pkg_id_callback_;
State state_;
+ std::deque<bool> head_request_;
std::string req_buffer_;
Content request_;
std::string resp_buffer_;
@@ -2077,6 +2079,7 @@ void ProxyImpl::MitmMonitor::local2remote(void const* data, size_t size) {
req_buffer_.clear();
break;
}
+ head_request_.push_back(req->method_equal("HEAD"));
req_buffer_.clear();
state_ = HTTP;
auto used = req->size() - offset;
@@ -2143,6 +2146,8 @@ void ProxyImpl::MitmMonitor::remote2local(void const* data, size_t size) {
resp_buffer_.clear();
break;
}
+ if (head_request_.front()) response_.type = CONTENT_NONE;
+ head_request_.pop_front();
resp_buffer_.clear();
auto used = resp->size() - offset;
if (first_remote_) {