conn->d_currentQuery = std::move(query);
}
- for (auto& pending : conn->d_pendingResponses) {
+ /* if we notify the sender it might terminate us so we need to move these first */
+ auto pendingResponses = std::move(conn->d_pendingResponses);
+ conn->d_pendingResponses.clear();
+ for (auto& pending : pendingResponses) {
--conn->d_ds->outstanding;
if (pending.second.d_query.isXFR() && pending.second.d_query.d_xfrStarted) {
conn->d_pendingQueries.push_back(std::move(pending.second));
}
}
- conn->d_pendingResponses.clear();
conn->d_currentPos = 0;
if (conn->d_state == State::sendingQueryToBackend) {