Fix TSAN conflict in AsyncDnsResolver

Bug: webrtc:12598
Change-Id: I42daf93b26ea56614812fedc26efa850db0d6526
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/317561
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40615}
This commit is contained in:
Harald Alvestrand 2023-08-24 09:19:52 +00:00 committed by WebRTC LUCI CQ
parent d36be2fc22
commit f45c2ceae0

View File

@ -109,13 +109,13 @@ void AsyncDnsResolver::Start(const rtc::SocketAddress& addr,
std::function<void()> callback) { std::function<void()> callback) {
RTC_DCHECK_RUN_ON(&result_.sequence_checker_); RTC_DCHECK_RUN_ON(&result_.sequence_checker_);
result_.addr_ = addr; result_.addr_ = addr;
auto thread_function = [this, addr, family, auto thread_function = [this, addr, family, flag = safety_.flag(),
caller_task_queue = webrtc::TaskQueueBase::Current(), caller_task_queue = webrtc::TaskQueueBase::Current(),
callback = std::move(callback)] { callback = std::move(callback)] {
std::vector<rtc::IPAddress> addresses; std::vector<rtc::IPAddress> addresses;
int error = ResolveHostname(addr.hostname(), family, addresses); int error = ResolveHostname(addr.hostname(), family, addresses);
caller_task_queue->PostTask( caller_task_queue->PostTask(
SafeTask(safety_.flag(), [this, error, addresses = std::move(addresses), SafeTask(flag, [this, error, addresses = std::move(addresses),
callback = std::move(callback)] { callback = std::move(callback)] {
RTC_DCHECK_RUN_ON(&result_.sequence_checker_); RTC_DCHECK_RUN_ON(&result_.sequence_checker_);
result_.addresses_ = addresses; result_.addresses_ = addresses;