diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/output/HttpdClient.cxx | 17 | ||||
-rw-r--r-- | src/output/HttpdClient.hxx | 3 |
2 files changed, 15 insertions, 5 deletions
diff --git a/src/output/HttpdClient.cxx b/src/output/HttpdClient.cxx index 8fae27855..121f36e41 100644 --- a/src/output/HttpdClient.cxx +++ b/src/output/HttpdClient.cxx @@ -37,8 +37,7 @@ HttpdClient::~HttpdClient() if (current_page != nullptr) current_page->Unref(); - for (auto page : pages) - page->Unref(); + ClearQueue(); } if (metadata) @@ -209,15 +208,23 @@ HttpdClient::HttpdClient(HttpdOutput &_httpd, int _fd, EventLoop &_loop, } void -HttpdClient::CancelQueue() +HttpdClient::ClearQueue() { - if (state != RESPONSE) - return; + assert(state == RESPONSE); for (auto page : pages) page->Unref(); pages.clear(); queue_size = 0; +} + +void +HttpdClient::CancelQueue() +{ + if (state != RESPONSE) + return; + + ClearQueue(); if (current_page == nullptr) CancelWrite(); diff --git a/src/output/HttpdClient.hxx b/src/output/HttpdClient.hxx index 12b7af13f..7b83bca33 100644 --- a/src/output/HttpdClient.hxx +++ b/src/output/HttpdClient.hxx @@ -187,6 +187,9 @@ public: */ void PushMetaData(Page *page); +private: + void ClearQueue(); + protected: virtual bool OnSocketReady(unsigned flags) override; virtual InputResult OnSocketInput(void *data, size_t length) override; |