Avoid concurrent requests for getting RSD service for a device #462
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR prevents concurrent requests for getting RSD service for a device, based on the trio formed by address, port, and TUN port (even if it's zero). I did this because I noticed my program getting stuck multiple times in this function and ended up writing a debug program that calls the function multiple times asynchronously and got a freeze every single time, whereas running it synchronously or by preventing concurrent access gave 100% of success rate.
This might be related to #460 in the sense that this is a problem that may never happen if we are "lucky" and no concurrent accesses are made, but that probability increases dramatically when more requests are made in parallel. The issue is most likely not related to go-iOS but it might be the easiest place to "fix" it, at the cost of loosing some parallelization capability.