From 3fcf62865795251ab34bb33f185ba5407ecadbff Mon Sep 17 00:00:00 2001 From: eidheim Date: Mon, 3 Jun 2019 12:12:33 +0200 Subject: [PATCH] Minor cleanup in send_from_queue --- server_http.hpp | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/server_http.hpp b/server_http.hpp index 5b243e8..2321964 100644 --- a/server_http.hpp +++ b/server_http.hpp @@ -77,30 +77,32 @@ namespace SimpleWeb { auto lock = self->session->connection->handler_runner->continue_lock(); if(!lock) return; - std::unique_lock send_queue_lock(self->send_queue_mutex); - if(!ec) { - auto it = self->send_queue.begin(); - auto callback = std::move(it->second); - self->send_queue.erase(it); - if(self->send_queue.size() > 0) - self->send_from_queue(); + { + std::unique_lock lock(self->send_queue_mutex); + if(!ec) { + auto it = self->send_queue.begin(); + auto callback = std::move(it->second); + self->send_queue.erase(it); + if(self->send_queue.size() > 0) + self->send_from_queue(); - send_queue_lock.unlock(); - if(callback) - callback(ec); - } - else { - // All handlers in the queue is called with ec: - std::vector> callbacks; - for(auto &pair : self->send_queue) { - if(pair.second) - callbacks.emplace_back(std::move(pair.second)); + lock.unlock(); + if(callback) + callback(ec); } - self->send_queue.clear(); + else { + // All handlers in the queue is called with ec: + std::vector> callbacks; + for(auto &pair : self->send_queue) { + if(pair.second) + callbacks.emplace_back(std::move(pair.second)); + } + self->send_queue.clear(); - send_queue_lock.unlock(); - for(auto &callback : callbacks) - callback(ec); + lock.unlock(); + for(auto &callback : callbacks) + callback(ec); + } } }); }