From b32c2be78dfa88cdb8bb90174fe6fef8757ae85a Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Fri, 3 Jun 2016 19:54:20 +0600 Subject: CLOUD: Fix ConnectionManager a little I didn't like how FINISHED Requests were waiting until the next interateRequests() call to be removed when we could easily remove those after they changed their state in their handle(). --- backends/networking/curl/connectionmanager.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'backends/networking') diff --git a/backends/networking/curl/connectionmanager.cpp b/backends/networking/curl/connectionmanager.cpp index c044a1577d..57ea2ce999 100644 --- a/backends/networking/curl/connectionmanager.cpp +++ b/backends/networking/curl/connectionmanager.cpp @@ -109,18 +109,18 @@ void ConnectionManager::interateRequests() { //call handle() of all running requests (so they can do their work) debug("handling %d request(s)", _requests.size()); for (Common::Array::iterator i = _requests.begin(); i != _requests.end();) { - Request *request = i->request; + Request *request = i->request; + if (request) { + if (request->state() == PROCESSING) request->handle(); + else if (request->state() == RETRY) request->handleRetry(); + } + if (!request || request->state() == FINISHED) { delete (i->request); if (i->onDeleteCallback) (*i->onDeleteCallback)(i->request); //that's not a mistake (we're passing an address and that method knows there is no object anymore) _requests.erase(i); continue; } - - if (request) { - if (request->state() == PROCESSING) request->handle(); - else if (request->state() == RETRY) request->handleRetry(); - } ++i; } -- cgit v1.2.3