-
Notifications
You must be signed in to change notification settings - Fork 14
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
Android Traceroute #572
Android Traceroute #572
Conversation
* Removed hard coded netinet folder, now using platform dependent libs * Added basic ping to MapControllerWrapper JNI
* Moving to separate include dir as the netinet library iOS is using was causing conflicts with new Android traceroute attempts
…estinationAddressWithTTL result
…rom currently selected node
* Had previously deleted netinet for an Android attempt; adding back to project fixed build issue.
@nbrooke I have noticed some differences in the resulting path on iOS and Android at times, however, I have been comparing my Android trace with both a traceroute on my laptop and using a traceroute Android app I found in the play store, and my results have been almost spot on in comparison with those. |
Testing this build it seems to work pretty well – we should get this wrapped up and released soon, so action plan:
|
//free up the strings | ||
jenv->DeleteLocalRef(from); | ||
//oh, we need to free this too | ||
jenv->DeleteLocalRef(probeWrapperClass); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Based on the local / global ref docs I found when validating the probeWrapper behaviour (https://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/design.html#wp1242), I don't think these calls are required. These should be freed automatically when this function returns.
* MapControllerWrapper and TracerouteUtil singletons; can now check isRunning to see if traceroute is running * Do not start a new trace until the previous has finished * Correctly clean up Timers for previous traceroutes * Do not reuse probeWrapper * More efficient string building
@abey Would you be able to run another round of testing on https://app.nevercode.io/#/project/4e922557-91dd-4635-8a56-bcbff3f9b239/build/cd2d9744-078f-4d62-973f-d1fc1c343429 @nbrooke Could you check the revisions I have made based on your suggestions? |
@ssawchenko Some comments:
|
@abey The crash blocks merging this but the other items don't really, can you break those other two into separate issues? |
I think this is currently waiting on the crash fix Abey found above. |
Will investigate crash first thing tomorrow. |
@nbrooke @abey I have made the following changes:
@abey Would you be able to give this one more round of testing? |
@ssawchenko Looks good. 👍
|
@abey I think there may be a difference in how each platform handles the hop timeout. Looks like on Android we are waiting one second per packet request, and then sending out a max of 3 probes. So we will be waiting at least the 3 seconds extra there when we reach an IP that is not returning us a response. @apike I could spend more time digging into where this time is being spent exactly, however, my gut says it's not a super important issue at the moment. Thoughts? |
Sounds like this is good to merge! |
@ssawchenko Yeah, this seems like a change that might be worth doing an old fashioned regular merge on just to be on the safe side. |
Discussed. Going to squash to reduce verbosity of commit history. |
#159
Ok so, a looooooong time in the making. While I am certain there are still many issues with this, I was hoping to start a code review / round of testing to give me a good sanity check on what may be remaining with this feature.
Note, like... 18k files changed due to me removing a redundant
boost
library and creating anExternal-Code-Android
folder to shelter Android from some problematic libraries. It may be easier to pull the code down and review it in an IDE rather than the diff window here due to that.Summary from the initial ticket:
Known issues: