diff options
author | eidheim <eidheim@gmail.com> | 2018-07-11 09:42:13 +0300 |
---|---|---|
committer | eidheim <eidheim@gmail.com> | 2018-07-11 09:42:13 +0300 |
commit | 611f17c7ceb9ae784cb5a7d5ddb1c2634b056560 (patch) | |
tree | 8f18e64ac92528726ba6df8f1ff30dacf0efbeb4 /server_ws.hpp | |
parent | e4d8f2c7c6959a37febb69371f61bedc8fb0dbcc (diff) |
All handlers in send queue is now called on error
Diffstat (limited to 'server_ws.hpp')
-rw-r--r-- | server_ws.hpp | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/server_ws.hpp b/server_ws.hpp index f579459..d547b79 100644 --- a/server_ws.hpp +++ b/server_ws.hpp @@ -233,22 +233,30 @@ namespace SimpleWeb { auto lock = self->handler_runner->continue_lock(); if(!lock) return; - auto send_queued = self->send_queue.begin(); - if(send_queued->callback) - send_queued->callback(ec); if(!ec) { - self->send_queue.erase(send_queued); + auto it = self->send_queue.begin(); + if(it->callback) + it->callback(ec); + self->send_queue.erase(it); if(self->send_queue.size() > 0) self->send_from_queue(); } - else + else { + // All handlers in the queue is called with ec: + for(auto &send_data : self->send_queue) { + if(send_data.callback) + send_data.callback(ec); + } self->send_queue.clear(); + } })); } else { - auto send_queued = self->send_queue.begin(); - if(send_queued->callback) - send_queued->callback(ec); + // All handlers in the queue is called with ec: + for(auto &send_data : self->send_queue) { + if(send_data.callback) + send_data.callback(ec); + } self->send_queue.clear(); } })); |