Отложенный повтор запроса отправляет мусор вместо тела
void Client::scheduleRetry(Request req) {
int attempts = 3;
timer_.after(std::chrono::seconds(1), [&] {
send(req, attempts);
});
}
Колбэк вызывается через секунду из цикла событий. Иногда отправляется пустой запрос, иногда процесс падает. В чём ошибка?
- Лямбда хранит ссылки на уже уничтоженные локальные
- Лямбду нельзя передавать в другой поток
- Захват [&] копирует объекты при вызове лямбды
- Request нужно передать в функцию по ссылке
