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().
This commit is contained in:
Alexander Tkachev 2016-06-03 19:54:20 +06:00
parent bcb2a5bd8d
commit b32c2be78d

View File

@ -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<RequestWithCallback>::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;
}