diff options
| author | Joel Klinghed <the_jk@yahoo.com> | 2017-08-09 21:11:30 +0200 |
|---|---|---|
| committer | Joel Klinghed <the_jk@yahoo.com> | 2017-08-09 21:11:30 +0200 |
| commit | 572d9ba729e12708deed0a6156209bbdc28698af (patch) | |
| tree | 9df7ee3af1331ffe78fcddba04ebb1eb67a3e03f | |
| parent | 582cf3f5efab85a6316cb5936d529ffa78cb3f4e (diff) | |
Handle HEAD requests over https
Responses to HEAD requests are always empty
| -rw-r--r-- | src/proxy.cc | 5 |
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_) { |
