-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make sure we stop resolves triggered by a browse when the browse stops on Darwin. #24733
Make sure we stop resolves triggered by a browse when the browse stops on Darwin. #24733
Conversation
…s on Darwin. Without this change, if there is a PTR record that matches whatever we are browsing but no corresponding SRV record, we would end up leaking a resolve forever. Tested by modifying minimal mdns SrvResponder::AddAllResponses to no-op instead of actually adding any responses, then trying to commission the device running the modified minimal mdns. Without this change, when the browse stops the resolves it triggered keep going. With this change, termination of the browse also terminates the resolves. Fixes project-chip#24074
The |
Exactly. That shuts down all the things sharing that connection. |
PR #24733: Size comparison from 0e896b4 to 9a71775 Increases (7 builds for bl702, cc13x2_26x2, cyw30739, esp32, nrfconnect, psoc6, telink)
Decreases (9 builds for bl602, cc13x2_26x2, cyw30739, k32w, psoc6, telink)
Full report (54 builds for bl602, bl702, cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, psoc6, qpg, telink)
|
319d6f0
to
571eb08
Compare
PR #24733: Size comparison from cdaa392 to 571eb08 Increases (7 builds for bl602, cc13x2_26x2, cyw30739, nrfconnect, telink)
Decreases (12 builds for bl702, cc13x2_26x2, esp32, k32w, psoc6, telink)
Full report (54 builds for bl602, bl702, cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, psoc6, qpg, telink)
|
So the previous approach does not work because each ResolveContext expects to get an update without the "more coming" flag and acts on that, but if they are all sharing a connection only one of them will get such an update. Fixing that would involve the resolve contexts knowing about each other and the one that gets that flag triggering finalization on all the other ones too. Since we have to track the ResolveContexts anyway to clean them up, I am going to go back to just having each one use a separate connection; it's less code and has the same effect in the end. |
9fe8ede
to
e41aedc
Compare
PR #24733: Size comparison from 210ae33 to e41aedc Increases (4 builds for bl602, esp32, psoc6, telink)
Decreases (3 builds for bl602, psoc6, telink)
Full report (49 builds for bl602, bl702, cc13x2_26x2, cyw30739, esp32, k32w, linux, mbed, nrfconnect, psoc6, qpg, telink)
|
PR #24733: Size comparison from 210ae33 to 13ebed0 Increases (3 builds for esp32, psoc6, telink)
Decreases (9 builds for bl602, bl702, psoc6, telink)
Full report (54 builds for bl602, bl702, cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, psoc6, qpg, telink)
|
…at fixes DNS-SD browsing Add an API to stop a DNS-SD browse operation. (project-chip#22823) * Add an API to stop a DNS-SD browse operation. Most backends don't implement this yet. Darwin does, and no longer stops Browse operations itself. Fixes project-chip#19194 May provide a way toward fixing project-chip#13275 * Address review comments. * Address more review comments. [darwin] Use DNSServiceReconfirmRecord for A and AAAA records to miti… (project-chip#23067) * [Dnssd] Add ReconfirmRecord method to verify address that appears to be out of date * [SetUpCodePairer] Ask Dnssd to reconfirm discovered addresses if connecting to them ends with a CHIP_ERROR_TIMEOUT Fix Logging When Trying to Log Nullptr To Strings (project-chip#23604) This PR attempts to identify all cases where %s specifiers in the logging APIs (ChipLogError(), ChipLogProgress(), ChipLogDetail()) don't have a guaranteed non-null string parameter. In all identified cases the issue is fixed using StringOrNullMarker() helper method to guarantee it doesn't happen. Use the "right" byte-swapping function for port in Darwin DnssdImpl. (project-chip#23894) The incoming port is in host byte order and we are converting to network byte order, so should use htons (which happens to do the same thing as ntohs, so no behavior change). Co-authored-by: Andrei Litvin <[email protected]> Add a way for Resolver consumers to cancel operational resolve attempts. (project-chip#24010) * Add a way for Resolver consumers to cancel operational resolve attempts. Adds a way for consumers to notify Resolver when they no longer care about an operational resolve, so a Resolver implementation can keep track of how many consumers are interested and stop work as desired if no one is interested. Fixes project-chip#23881 * Address review comments. * Address review comments. Make sure we stop resolves triggered by a browse when the browse stops on Darwin. (project-chip#24733) * Make sure we stop resolves triggered by a browse when the browse stops on Darwin. Without this change, if there is a PTR record that matches whatever we are browsing but no corresponding SRV record, we would end up leaking a resolve forever. Tested by modifying minimal mdns SrvResponder::AddAllResponses to no-op instead of actually adding any responses, then trying to commission the device running the modified minimal mdns. Without this change, when the browse stops the resolves it triggered keep going. With this change, termination of the browse also terminates the resolves. Fixes project-chip#24074 * Also avoid leaking ResolveContext instances. * Fix handling of multiple interfaces. * Address review comment. Improve discovery logging on Darwin. (project-chip#24846) 1) Use progress, not detail, logging, because detail logging is not actually persisted in system logs. 2) Add logging to a few functions that were missing it. Remove the address type argument from ResolveNodeId. (project-chip#24006) All consumers were passing kAny in practice, and some of the backends (e.g. minimal mdns) had no capability to filter by type anyway.
…s on Darwin. (project-chip#24733) * Make sure we stop resolves triggered by a browse when the browse stops on Darwin. Without this change, if there is a PTR record that matches whatever we are browsing but no corresponding SRV record, we would end up leaking a resolve forever. Tested by modifying minimal mdns SrvResponder::AddAllResponses to no-op instead of actually adding any responses, then trying to commission the device running the modified minimal mdns. Without this change, when the browse stops the resolves it triggered keep going. With this change, termination of the browse also terminates the resolves. Fixes project-chip#24074 * Also avoid leaking ResolveContext instances. * Fix handling of multiple interfaces. * Address review comment.
Without this change, if there is a PTR record that matches whatever we are browsing but no corresponding SRV record, we would end up leaking a resolve forever.
Tested by modifying minimal mdns SrvResponder::AddAllResponses to no-op instead of actually adding any responses, then trying to commission the device running the modified minimal mdns. Without this change, when the browse stops the resolves it triggered keep going. With this change, termination of the browse also terminates the resolves.
Fixes #24074