Batphone app file sharing issues

112 views
Skip to first unread message

Jason Wong

unread,
Jan 30, 2016, 11:46:09 AM1/30/16
to Serval Project Developers
Hello! I'm new to Serval Project, and I am having an issue with initially using the batphone application found on GitHub.

Interestingly enough, I tried out the Serval Mesh application from the Playstore and it works perfectly on my Nexus 2012. So then I tried out the instructions on GitHub on setting up the batphone application here https://github.com/servalproject/batphone/blob/development/INSTALL.md.

I successfully built the master branch version 0.92 using both build.sh and also tried building using "ant debug" directly.

I installed the batphone apk and most functions work such as calling, and SMS on ad hoc mode. However, I'm seeing a couple issues that don't exist for the app from the Playstore:
  1. File sharing does not work at all. Once I share the file the toast "File shared via Serval Mesh" appears, but the other device doesn't see the file. Consequently, I'll get a toast "failed to connect to localhost/127.0.0.1 (port 4110): failed to connect: ECONNREFUSED (Connection refused)" and all other functions such as SMS and calling stop working and spit out the failed to connect toast. I resolve this error by uninstalling and reinstalling the apk.
  2. Mesh Testing must be run twice before selecting the right profile. The first time it picks generic, than the second time it correctly selects generic-iw.

I've tried rechecking out the files, nothing seems to help. I haven't modified any of the files.

Any ideas on possible root causes (I know this might be a long shot, but I'm stuck)?


Thanks in advance! Let me know if you need any other info.

batphone-debug.apk

Jeremy Lakeman

unread,
Jan 30, 2016, 7:51:50 PM1/30/16
to Serval Project Developers
On Sun, Jan 31, 2016 at 3:16 AM, 'Jason Wong' via Serval Project Developers <serval-proje...@googlegroups.com> wrote:
Hello! I'm new to Serval Project, and I am having an issue with initially using the batphone application found on GitHub.

Interestingly enough, I tried out the Serval Mesh application from the Playstore and it works perfectly on my Nexus 2012. So then I tried out the instructions on GitHub on setting up the batphone application here https://github.com/servalproject/batphone/blob/development/INSTALL.md.

I successfully built the master branch version 0.92 using both build.sh and also tried building using "ant debug" directly.

I installed the batphone apk and most functions work such as calling, and SMS on ad hoc mode. However, I'm seeing a couple issues that don't exist for the app from the Playstore:
  1. File sharing does not work at all. Once I share the file the toast "File shared via Serval Mesh" appears, but the other device doesn't see the file. Consequently, I'll get a toast "failed to connect to localhost/127.0.0.1 (port 4110): failed to connect: ECONNREFUSED (Connection refused)" and all other functions such as SMS and calling stop working and spit out the failed to connect toast. I resolve this error by uninstalling and reinstalling the apk.
Once we bind our httpd_server_socket, we don't close it unless the entire process closes. It's possible that the process is crashing and being restarted by Android without you noticing, with something else then failing on startup.
We test the file sharing features of our back end daemon fairly thoroughly in isolation. But we haven't done much testing of these features when integrated in batphone.
 
  1. Mesh Testing must be run twice before selecting the right profile. The first time it picks generic, than the second time it correctly selects generic-iw.

I've tried rechecking out the files, nothing seems to help. I haven't modified any of the files.

Any ideas on possible root causes (I know this might be a long shot, but I'm stuck)?


In both cases the output of the android log will probably be enlightening. eg;

$ adb -s <device> logcat -v threadtime

Then try to reproduce the problem.

I'll try to reproduce your first problem tomorrow, but I don't have your hardware for the second.
 

Thanks in advance! Let me know if you need any other info.

--
You received this message because you are subscribed to the Google Groups "Serval Project Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to serval-project-dev...@googlegroups.com.
To post to this group, send email to serval-proje...@googlegroups.com.
Visit this group at https://groups.google.com/group/serval-project-developers.
For more options, visit https://groups.google.com/d/optout.

Jason Wong

unread,
Jan 30, 2016, 10:20:27 PM1/30/16
to Serval Project Developers
Thanks for the reply. I pulled the logcat as you asked and attached the file. The interesting snippits are below:

While the application is idle (before sharing the file), this is constantly being printed out:

01-30 21:06:23.303 16353 16353 E servald : 21:06:23.298 overlay_interface.c:955:overlay_broadcast_ensemble()  sendto(fd=57,len=6,addr=AF_INET:29.128.10.238:4110) on interface wlan0: Network is unreachable [errno=101]
01-30 21:06:23.808 16353 16353 E servald : 21:06:23.808 overlay_interface.c:955:overlay_broadcast_ensemble()  sendto(fd=57,len=6,addr=AF_INET:29.128.10.238:4110) on interface wlan0: Network is unreachable [errno=101]
01-30 21:06:24.338 16353 16353 E servald : 21:06:24.337 overlay_interface.c:955:overlay_broadcast_ensemble()  sendto(fd=57,len=6,addr=AF_INET:29.128.10.238:4110) on interface wlan0: Network is unreachable [errno=101]

When I share the file, this gets printed out:

01-30 21:06:38.963   486   590 W AudioTrack: AUDIO_OUTPUT_FLAG_FAST denied by client
01-30 21:06:39.016 16201 16221 I servald : 21:06:39.016 rhizome_database.c:41:create_rhizome_store_dir()  Rhizome datastore path = `/storage/emulated/0/Android/data/org.servalproject/files/rhizome`
01-30 21:06:39.018 16201 16221 I servald : 21:06:39.018 rhizome_database.c:345:rhizome_opendb()  Opened Rhizome database /data/data/org.servalproject/var/serval-node/rhizome.db, UUID=f72a5728-f427-4d00-b37d-8cf0466d3baf
01-30 21:06:39.118 16353 16353 E servald : 21:06:39.117 overlay_interface.c:955:overlay_broadcast_ensemble()  sendto(fd=57,len=6,addr=AF_INET:29.128.10.238:4110) on interface wlan0: Network is unreachable [errno=101]
01-30 21:06:39.143 16201 16221 I servald : 21:06:39.143 rhizome_database.c:1355:rhizome_store_manifest()  RHIZOME ADD MANIFEST service=file bid=72480D842FEE4DCC3B5D925B8E7B38F4E9E70AE1A49DA3A304730E58731E5ADB version=1454209599018
01-30 21:06:39.621 16353 16353 E servald : 21:06:39.621 overlay_interface.c:955:overlay_broadcast_ensemble()  sendto(fd=57,len=6,addr=AF_INET:29.128.10.238:4110) on interface wlan0: Network is unreachable [errno=101]
01-30 21:06:39.623 16353 16353 F libc    : Fatal signal 7 (SIGBUS), code 1, fault addr 0x628c25d5 in tid 16353 (AsyncTask #2)
01-30 21:06:39.624   146   146 I DEBUG   : property debug.db.uid not set; NOT waiting for gdb.
01-30 21:06:39.624   146   146 I DEBUG   : HINT: adb shell setprop debug.db.uid 100000
01-30 21:06:39.624   146   146 I DEBUG   : HINT: adb forward tcp:5039 tcp:5039
01-30 21:06:39.726   146   146 I DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
01-30 21:06:39.726   146   146 I DEBUG   : Build fingerprint: 'google/nakasi/grouper:5.0/LRX21P/1570855:user/release-keys'
01-30 21:06:39.726   146   146 I DEBUG   : Revision: '0'
01-30 21:06:39.726   146   146 I DEBUG   : ABI: 'arm'
01-30 21:06:39.727   146   146 I DEBUG   : pid: 16353, tid: 16353, name: AsyncTask #2  >>> org.servalproject <<<
01-30 21:06:39.727   146   146 I DEBUG   : signal 7 (SIGBUS), code 1 (BUS_ADRALN), fault addr 0x628c25d5
01-30 21:06:39.728   486   609 W NativeCrashListener: Couldn't find ProcessRecord for pid 16353
01-30 21:06:39.756   146   146 I DEBUG   :     r0 5ab39320  r1 00000000  r2 00ff00ff  r3 628c25d5
01-30 21:06:39.756   146   146 E DEBUG   : AM write failure (32 / Broken pipe)
01-30 21:06:39.756   146   146 I DEBUG   :     r4 628c25d5  r5 5f1d36f1  r6 ff00ff00  r7 510e527f
01-30 21:06:39.756   146   146 I DEBUG   :     r8 12ca9e80  r9 420738b8  sl 12f0a680  fp 12c64120
01-30 21:06:39.756   146   146 I DEBUG   :     ip 00098089  sp 628c2080  lr 61ce57c7  pc 61ce52c2  cpsr 00070030
01-30 21:06:39.757   146   146 I DEBUG   :
01-30 21:06:39.757   146   146 I DEBUG   : backtrace:
01-30 21:06:39.757   146   146 I DEBUG   :     #00 pc 000f72c2  /data/app/org.servalproject-1/lib/arm/libserval.so (SHA512_Transform+93)
01-30 21:06:39.757   146   146 I DEBUG   :     #01 pc 000f77c3  /data/app/org.servalproject-1/lib/arm/libserval.so (SHA512_Update+130)
01-30 21:06:39.758   146   146 I DEBUG   :     #02 pc 000efa97  /data/app/org.servalproject-1/lib/arm/libserval.so (rhizome_read+1818)
01-30 21:06:39.758   146   146 I DEBUG   :     #03 pc 000f080f  /data/app/org.servalproject-1/lib/arm/libserval.so (rhizome_read_cached+726)
01-30 21:06:39.758   146   146 I DEBUG   :     #04 pc 000c7eb1  /data/app/org.servalproject-1/lib/arm/libserval.so (rhizome_mdp_send_block+1080)
01-30 21:06:39.758   146   146 I DEBUG   :     #05 pc 000c80f5  /data/app/org.servalproject-1/lib/arm/libserval.so (overlay_mdp_service_rhizomerequest+132)
01-30 21:06:39.758   146   146 I DEBUG   :     #06 pc 000c2bb7  /data/app/org.servalproject-1/lib/arm/libserval.so
01-30 21:06:39.758   146   146 I DEBUG   :     #07 pc 000c36ed  /data/app/org.servalproject-1/lib/arm/libserval.so (overlay_saw_mdp_containing_frame+244)
01-30 21:06:39.758   146   146 I DEBUG   :     #08 pc 000ca6b5  /data/app/org.servalproject-1/lib/arm/libserval.so (process_incoming_frame+104)
01-30 21:06:39.758   146   146 I DEBUG   :     #09 pc 000cbf6b  /data/app/org.servalproject-1/lib/arm/libserval.so (packetOkOverlay+1918)
01-30 21:06:39.758   146   146 I DEBUG   :     #10 pc 000bd693  /data/app/org.servalproject-1/lib/arm/libserval.so
01-30 21:06:39.758   146   146 I DEBUG   :     #11 pc 00082fd3  /data/app/org.servalproject-1/lib/arm/libserval.so
01-30 21:06:39.758   146   146 I DEBUG   :     #12 pc 00084321  /data/app/org.servalproject-1/lib/arm/libserval.so (fd_poll+984)
01-30 21:06:39.758   146   146 I DEBUG   :     #13 pc 000f5ffd  /data/app/org.servalproject-1/lib/arm/libserval.so
01-30 21:06:39.758   146   146 I DEBUG   :     #14 pc 000f6a5f  /data/app/org.servalproject-1/lib/arm/libserval.so
01-30 21:06:39.758   146   146 I DEBUG   :     #15 pc 00061e8f  /data/app/org.servalproject-1/lib/arm/libserval.so (cli_invoke+70)
01-30 21:06:39.758   146   146 I DEBUG   :     #16 pc 0008d2c1  /data/app/org.servalproject-1/lib/arm/libserval.so (parseCommandLine+168)
01-30 21:06:39.758   146   146 I DEBUG   :     #17 pc 0008d6a3  /data/app/org.servalproject-1/lib/arm/libserval.so (Java_org_servalproject_servaldna_ServalDCommand_rawCommand+690)
01-30 21:06:39.758   146   146 I DEBUG   :     #18 pc 00035d79  /data/dalvik-cache/arm/data@app@org.serva...@base.apk@classes.dex
01-30 21:06:39.839   146   146 I DEBUG   :
01-30 21:06:39.839   146   146 I DEBUG   : Tombstone written to: /data/tombstones/tombstone_08
01-30 21:06:39.840   486   509 I BootReceiver: Copying /data/tombstones/tombstone_08 to DropBox (SYSTEM_TOMBSTONE)
01-30 21:06:39.841   486  1754 E SharedPreferencesImpl: Couldn't create directory for SharedPreferences file shared_prefs/log_files.xml

Then after, this message gets repeated over and over:

01-30 21:06:39.866 16201 16354 E ServalDMonitor: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
01-30 21:06:39.866 16201 16354 E ServalDMonitor: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
01-30 21:06:39.866 16201 16354 E ServalDMonitor:     at org.servalproject.servald.ServalDMonitor.run(ServalDMonitor.java:265)
01-30 21:06:39.866 16201 16354 E ServalDMonitor:     at java.lang.Thread.run(Thread.java:818)
01-30 21:06:39.866 16201 16354 E ServalDMonitor: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
01-30 21:06:39.866 16201 16354 E ServalDMonitor: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
01-30 21:06:39.866 16201 16354 E ServalDMonitor:     at org.servalproject.servald.ServalDMonitor.run(ServalDMonitor.java:265)
01-30 21:06:39.866 16201 16354 E ServalDMonitor:     at java.lang.Thread.run(Thread.java:818)
To unsubscribe from this group and stop receiving emails from it, send an email to serval-project-developers+unsub...@googlegroups.com.
Terminal Saved Output

Jeremy Lakeman

unread,
Jan 30, 2016, 10:38:51 PM1/30/16
to Serval Project Developers
Looks like I was right about clang & undefined behaviour when Amit Kumar recently ran into a similar problem, but didn't send us the same log output.
Make sure the submodule jni/serval-dna is updated to the latest commit from origin/development, and this problem should disappear.

I haven't synced to the submodule commit yet, since the API hasn't changed & we haven't built another alpha apk yet.

To unsubscribe from this group and stop receiving emails from it, send an email to serval-project-dev...@googlegroups.com.
To post to this group, send email to serval-proje...@googlegroups.com.
Visit this group at https://groups.google.com/group/serval-project-developers.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Serval Project Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to serval-project-dev...@googlegroups.com.

Jason Wong

unread,
Jan 30, 2016, 11:38:08 PM1/30/16
to Serval Project Developers
So I had the batphone checkout on origin/master, while the submodule was on origin/development and the build fails with this combination.

-compile:

    [javac] Compiling 104 source files to /Users/jasonwong/Desktop/serval/src/batphone/bin/classes

    [javac] warning: [options] source value 1.5 is obsolete and will be removed in a future release

    [javac] warning: [options] target value 1.5 is obsolete and will be removed in a future release

    [javac] warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.

    [javac] /Users/jasonwong/Desktop/serval/src/batphone/src/org/servalproject/servald/ServalD.java:135: error: isRunning() in ServalD cannot override isRunning() in ServerControl

    [javac] public boolean isRunning() throws ServalDFailureException {

    [javac]                ^

    [javac]   overridden method does not throw ServalDFailureException

    [javac] Note: /Users/jasonwong/Desktop/serval/src/batphone/src/org/servalproject/servald/Identity.java uses or overrides a deprecated API.

    [javac] Note: Recompile with -Xlint:deprecation for details.

    [javac] Note: /Users/jasonwong/Desktop/serval/src/batphone/src/org/servalproject/messages/ShowConversationActivity.java uses unchecked or unsafe operations.

    [javac] Note: Recompile with -Xlint:unchecked for details.

    [javac] 1 error

    [javac] 3 warnings


BUILD FAILED



So I switched the batphone checkout to origin/development and the submodule on origin/development and it builds successfully.

So now, on Wifi mode file sharing now works, which it didn't before. But when attempting to do the Mesh Testing the app crashes. This may be sufficient for my needs since I may end up just using a mesh extender which from what I understand uses Wifi mode.

01-30 22:24:47.554 31446 32375 V WifiControl: Waiting for wifi to turn off

01-30 22:24:50.380 31446 31543 E servald : network_cli.c:424:app_count_peers()    MDP Server error #1: 'Timeout waiting for reply to MDP packet (packet was successfully sent).'

01-30 22:24:50.382 31446 31543 W System.err: org.servalproject.servaldna.ServalDFailureException: Command "peer count" returned an error

01-30 22:24:50.382 31446 31543 W System.err: at org.servalproject.servaldna.ServalDCommand.command(ServalDCommand.java:90)

01-30 22:24:50.383 31446 31543 W System.err: at org.servalproject.servaldna.ServalDCommand.peerCount(ServalDCommand.java:592)

01-30 22:24:50.383 31446 31543 W System.err: at org.servalproject.servald.PeerListService.updatePeerCount(PeerListService.java:246)

01-30 22:24:50.383 31446 31543 W System.err: at org.servalproject.servald.PeerListService.access$300(PeerListService.java:53)

01-30 22:24:50.383 31446 31543 W System.err: at org.servalproject.servald.PeerListService$4.message(PeerListService.java:345)

01-30 22:24:50.383 31446 31543 W System.err: at org.servalproject.servald.ServalDMonitor.processInput(ServalDMonitor.java:388)

01-30 22:24:50.383 31446 31543 W System.err: at org.servalproject.servald.ServalDMonitor.run(ServalDMonitor.java:263)

01-30 22:24:50.383 31446 31543 W System.err: at java.lang.Thread.run(Thread.java:818)

01-30 22:24:50.387   494   516 W BroadcastQueue: Skipping deliver [background] BroadcastRecord{5965516 u0 org.servalproject.ACTION_STATUS} to ReceiverList{3b057da7 31446 org.servalproject/10085/u0 remote:1fa98666}: process crashing

01-30 22:24:50.420   494   608 W AudioTrack: AUDIO_OUTPUT_FLAG_FAST denied by client

01-30 22:24:50.421 31446 31541 I Process : Sending signal. PID: 31446 SIG: 9

01-30 22:24:50.430   648   648 V PhoneStatusBar: setLightsOn(true)

01-30 22:24:50.445   494  1158 I WindowState: WIN DEATH: Window{254bd3e3 u0 org.servalproject/org.servalproject.wizard.Wizard}

01-30 22:24:50.447   494  1303 I libprocessgroup: Killing pid 32376 in uid 10085 as part of process group 31446

01-30 22:24:50.447   494  1303 I libprocessgroup: Killing pid 32377 in uid 10085 as part of process group 31446

01-30 22:24:50.447   494   602 D WifiService: Client connection lost with reason: 4

01-30 22:24:50.447   494  1303 I libprocessgroup: Killing pid 32376 in uid 10085 as part of process group 31446

01-30 22:24:50.448   494   567 W InputDispatcher: channel 'f751ea0 org.servalproject/org.servalproject.Main (server)' ~ Consumer closed input channel or an error occurred.  events=0x9

01-30 22:24:50.448   494   567 E InputDispatcher: channel 'f751ea0 org.servalproject/org.servalproject.Main (server)' ~ Channel is unrecoverably broken and will be disposed!

01-30 22:24:50.448   494   567 W InputDispatcher: channel '1dbef2e9 org.servalproject/org.servalproject.ui.Networks (server)' ~ Consumer closed input channel or an error occurred.  events=0x9

01-30 22:24:50.448   494   567 E InputDispatcher: channel '1dbef2e9 org.servalproject/org.servalproject.ui.Networks (server)' ~ Channel is unrecoverably broken and will be disposed!

01-30 22:24:50.449 32381 32381 D su      : Finishing su operation for app [uid:10085, pkgName: org.servalproject]

01-30 22:24:50.452 32379 32379 D su      : sending code

01-30 22:24:50.457   494   929 I WindowState: WIN DEATH: Window{f751ea0 u0 org.servalproject/org.servalproject.Main}

01-30 22:24:50.457   494   929 W InputDispatcher: Attempted to unregister already unregistered input channel 'f751ea0 org.servalproject/org.servalproject.Main (server)'

01-30 22:24:50.471   494  1033 I WindowState: WIN DEATH: Window{1dbef2e9 u0 org.servalproject/org.servalproject.ui.Networks}

01-30 22:24:50.471   494  1033 W InputDispatcher: Attempted to unregister already unregistered input channel '1dbef2e9 org.servalproject/org.servalproject.ui.Networks (server)'

01-30 22:24:50.540   494  1303 I ActivityManager: Process org.servalproject (pid 31446) has died

01-30 22:24:50.541   494  1303 W ActivityManager: Force removing ActivityRecord{13512f96 u0 org.servalproject/.ui.Networks t78}: app died, no saved state

01-30 21:06:39.758   146   146 I DEBUG   :     #18 pc 00035d79  /data/dalvik-cache/arm/data@a...@org.servalproject-1@base.a...@classes.dex
To unsubscribe from this group and stop receiving emails from it, send an email to serval-project-developers+unsub...@googlegroups.com.
To post to this group, send email to serval-proje...@googlegroups.com.
Visit this group at https://groups.google.com/group/serval-project-developers.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Serval Project Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to serval-project-developers+unsub...@googlegroups.com.

Jeremy Lakeman

unread,
Jan 31, 2016, 12:31:24 AM1/31/16
to Serval Project Developers
On Sun, Jan 31, 2016 at 3:08 PM, 'Jason Wong' via Serval Project Developers <serval-proje...@googlegroups.com> wrote:
So I had the batphone checkout on origin/master, while the submodule was on origin/development and the build fails with this combination.

-compile:

    [javac] Compiling 104 source files to /Users/jasonwong/Desktop/serval/src/batphone/bin/classes

    [javac] warning: [options] source value 1.5 is obsolete and will be removed in a future release

    [javac] warning: [options] target value 1.5 is obsolete and will be removed in a future release

    [javac] warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.

    [javac] /Users/jasonwong/Desktop/serval/src/batphone/src/org/servalproject/servald/ServalD.java:135: error: isRunning() in ServalD cannot override isRunning() in ServerControl

    [javac] public boolean isRunning() throws ServalDFailureException {

    [javac]                ^

    [javac]   overridden method does not throw ServalDFailureException

    [javac] Note: /Users/jasonwong/Desktop/serval/src/batphone/src/org/servalproject/servald/Identity.java uses or overrides a deprecated API.

    [javac] Note: Recompile with -Xlint:deprecation for details.

    [javac] Note: /Users/jasonwong/Desktop/serval/src/batphone/src/org/servalproject/messages/ShowConversationActivity.java uses unchecked or unsafe operations.

    [javac] Note: Recompile with -Xlint:unchecked for details.

    [javac] 1 error

    [javac] 3 warnings


BUILD FAILED



So I switched the batphone checkout to origin/development and the submodule on origin/development and it builds successfully.

So now, on Wifi mode file sharing now works, which it didn't before. But when attempting to do the Mesh Testing the app crashes. This may be sufficient for my needs since I may end up just using a mesh extender which from what I understand uses Wifi mode.

01-30 22:24:47.554 31446 32375 V WifiControl: Waiting for wifi to turn off


But didn't get to the end of that method (no "iwconfig; " in the log)
So that might be the source of the crash.
 

01-30 22:24:50.380 31446 31543 E servald : network_cli.c:424:app_count_peers()    MDP Server error #1: 'Timeout waiting for reply to MDP packet (packet was successfully sent).'


That's odd.
 

01-30 22:24:50.382 31446 31543 W System.err: org.servalproject.servaldna.ServalDFailureException: Command "peer count" returned an error

01-30 22:24:50.382 31446 31543 W System.err: at org.servalproject.servaldna.ServalDCommand.command(ServalDCommand.java:90)

01-30 22:24:50.383 31446 31543 W System.err: at org.servalproject.servaldna.ServalDCommand.peerCount(ServalDCommand.java:592)

01-30 22:24:50.383 31446 31543 W System.err: at org.servalproject.servald.PeerListService.updatePeerCount(PeerListService.java:246)

01-30 22:24:50.383 31446 31543 W System.err: at org.servalproject.servald.PeerListService.access$300(PeerListService.java:53)

01-30 22:24:50.383 31446 31543 W System.err: at org.servalproject.servald.PeerListService$4.message(PeerListService.java:345)

01-30 22:24:50.383 31446 31543 W System.err: at org.servalproject.servald.ServalDMonitor.processInput(ServalDMonitor.java:388)

01-30 22:24:50.383 31446 31543 W System.err: at org.servalproject.servald.ServalDMonitor.run(ServalDMonitor.java:263)

01-30 22:24:50.383 31446 31543 W System.err: at java.lang.Thread.run(Thread.java:818)


But doesn't explain why the process is crashing. This printed exception is ignored, (but should be printed with Log.e());
https://github.com/servalproject/batphone/blob/8128207aa75c82b4ea0c835f5be84b815d04cb60/src/org/servalproject/servald/PeerListService.java#L259

 

01-30 22:24:50.387   494   516 W BroadcastQueue: Skipping deliver [background] BroadcastRecord{5965516 u0 org.servalproject.ACTION_STATUS} to ReceiverList{3b057da7 31446 org.servalproject/10085/u0 remote:1fa98666}: process crashing

01-30 22:24:50.420   494   608 W AudioTrack: AUDIO_OUTPUT_FLAG_FAST denied by client

01-30 22:24:50.421 31446 31541 I Process : Sending signal. PID: 31446 SIG: 9

01-30 22:24:50.430   648   648 V PhoneStatusBar: setLightsOn(true)

01-30 22:24:50.445   494  1158 I WindowState: WIN DEATH: Window{254bd3e3 u0 org.servalproject/org.servalproject.wizard.Wizard}

01-30 22:24:50.447   494  1303 I libprocessgroup: Killing pid 32376 in uid 10085 as part of process group 31446

01-30 22:24:50.447   494  1303 I libprocessgroup: Killing pid 32377 in uid 10085 as part of process group 31446

01-30 22:24:50.447   494   602 D WifiService: Client connection lost with reason: 4

01-30 22:24:50.447   494  1303 I libprocessgroup: Killing pid 32376 in uid 10085 as part of process group 31446

01-30 22:24:50.448   494   567 W InputDispatcher: channel 'f751ea0 org.servalproject/org.servalproject.Main (server)' ~ Consumer closed input channel or an error occurred.  events=0x9

01-30 22:24:50.448   494   567 E InputDispatcher: channel 'f751ea0 org.servalproject/org.servalproject.Main (server)' ~ Channel is unrecoverably broken and will be disposed!

01-30 22:24:50.448   494   567 W InputDispatcher: channel '1dbef2e9 org.servalproject/org.servalproject.ui.Networks (server)' ~ Consumer closed input channel or an error occurred.  events=0x9

01-30 22:24:50.448   494   567 E InputDispatcher: channel '1dbef2e9 org.servalproject/org.servalproject.ui.Networks (server)' ~ Channel is unrecoverably broken and will be disposed!

01-30 22:24:50.449 32381 32381 D su      : Finishing su operation for app [uid:10085, pkgName: org.servalproject]

01-30 22:24:50.452 32379 32379 D su      : sending code

01-30 22:24:50.457   494   929 I WindowState: WIN DEATH: Window{f751ea0 u0 org.servalproject/org.servalproject.Main}

01-30 22:24:50.457   494   929 W InputDispatcher: Attempted to unregister already unregistered input channel 'f751ea0 org.servalproject/org.servalproject.Main (server)'

01-30 22:24:50.471   494  1033 I WindowState: WIN DEATH: Window{1dbef2e9 u0 org.servalproject/org.servalproject.ui.Networks}

01-30 22:24:50.471   494  1033 W InputDispatcher: Attempted to unregister already unregistered input channel '1dbef2e9 org.servalproject/org.servalproject.ui.Networks (server)'

01-30 22:24:50.540   494  1303 I ActivityManager: Process org.servalproject (pid 31446) has died

01-30 22:24:50.541   494  1303 W ActivityManager: Force removing ActivityRecord{13512f96 u0 org.servalproject/.ui.Networks t78}: app died, no saved state



No other output? strange.


Jason Wong

unread,
Feb 4, 2016, 1:31:47 PM2/4/16
to Serval Project Developers
I was originally using Mac OS X 10.11 to build the batphone apk, which is what was causing all these issues.

I tried using Debian to build the apk and all the issues disappeared. Not sure what the difference would be.

Paul Gardner-Stephen

unread,
Feb 4, 2016, 5:17:33 PM2/4/16
to Serval Project Developers
Hello,

Okay - a useful piece of information. I am on OSX 10.11 here, so we can look into this on our side in terms of trying to build on OSX 10.11.

Paul.

--
You received this message because you are subscribed to the Google Groups "Serval Project Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to serval-project-dev...@googlegroups.com.

Jason Wong

unread,
Feb 5, 2016, 9:37:41 PM2/5/16
to Serval Project Developers
Ok, so I take back my statement about it working on Debian and not OS X. I've reproduced the issues on both built apks.

I think I've figured out why the batphone app was crashing on trying to enable "Ad Hoc Mesh".

The app is trying to start ServalD (or something else) without waiting to get root permissions via the pop up "Serval Mesh would like to get root access." If I hit the "allow" button fast enough on the pop up "Ad Hoc Mesh" connects just fine (within 1 second or so). If I wait any longer than 1 second the app crashes as if it tried to start something and failed since it didn't have root access. I'm not sure why its not waiting to get root access.

Turning "Ad Hoc Mesh" back off crashes the app regardless.




To unsubscribe from this group and stop receiving emails from it, send an email to serval-project-developers+unsub...@googlegroups.com.

Jeremy Lakeman

unread,
Feb 5, 2016, 10:02:22 PM2/5/16
to Serval Project Developers
That sounds odd.

We start a shell process, write "echo Started" to stdin, then wait for "Started" to be written to stdout. None of that should depend on timing, as it's all blocking IO streams.
All of that should happen before startRootShell returns.

We then pipe all the other commands we want to run to stdin, and read their output from stdout. Delimited by another echo statement with the return code of each command.

And all of that should happen in the same thread.


Can you post more context from the android log?

Everything from a "Starting shell: ..." line before the Allow / Deny prompt opens, until the app crashes. Hopefully with a stack trace.


To unsubscribe from this group and stop receiving emails from it, send an email to serval-project-dev...@googlegroups.com.
To post to this group, send email to serval-proje...@googlegroups.com.
Visit this group at https://groups.google.com/group/serval-project-developers.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Serval Project Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to serval-project-dev...@googlegroups.com.
Message has been deleted

Jason Wong

unread,
Feb 5, 2016, 10:43:34 PM2/5/16
to Serval Project Developers
Here's the entire output file. I enabled ad-hoc, the superuser prompt popped up, the app crashed while the superuser prompt was still up. I pressed ok on a new prompt saying "Serval Mesh is not responding" two times. Once the app completely crashed the superuser prompt went away after awhile.
Terminal Saved Output su error 2

Jeremy Lakeman

unread,
Feb 6, 2016, 1:01:35 AM2/6/16
to Serval Project Developers
So theres lots of these messages;

02-05 21:38:15.686 16467 16567 I servald : overlay_interface.c:653:overlay_interface_init()  Interface wlan0 addr AF_INET:10.0.0.1:4110, is up
02-05 21:38:15.687 16467 16567 I servald : overlay_interface.c:659:overlay_interface_init()  Allowing a maximum of 7 packets every 5ms
02-05 21:38:15.694 16467 16567 E servald : overlay_interface.c:1062:overlay_broadcast_ensemble()  sendto(fd=70,len=6,addr=AF_INET:10.255.255.255:4110) on interface wlan0: Network is unreachable [errno=101]
02-05 21:38:15.695 16467 16567 I servald : overlay_interface.c:93:overlay_interface_close()  Interface wlan0 addr AF_INET:10.0.0.1:4110 is down

The interface is up, but sending broadcast packets returns unreachable? This is probably the problem we actually need to solve.
What's the netmask of the interface? (we should log what we think it is...)

What does the routing table look like?
$ adb shell cat /proc/net/route

We should also delay any attempt to detect the network interface again.

And then this;
02-05 21:38:15.698 16467 16567 E servald : monitor.c:666:monitor_tell_clients()  write_all_nonblock: write(44,0x61b14814 `\nINTERFACE:wlan0:DOWN\n`,22) returned 0
02-05 21:38:15.699 16467 16567 I servald : monitor.c:669:monitor_tell_clients()  Tearing down monitor client #0
02-05 21:38:15.699 16467 16567 I servald : monitor.c:172:monitor_close()  Tearing down monitor client fd=44
02-05 21:38:15.699 16467 16567 I servald : monitor.c:175:monitor_close()  Quitting due to client disconnecting
02-05 21:38:15.699 16467 16567 I servald : overlay_interface.c:93:overlay_interface_close()  Interface wlan0 addr AF_INET:10.0.0.1:4110 is down
02-05 21:38:15.702 16467 16567 E AndroidRuntime: FATAL EXCEPTION: Servald
02-05 21:38:15.702 16467 16567 E AndroidRuntime: Process: org.servalproject, PID: 16467
02-05 21:38:15.702 16467 16567 E AndroidRuntime: java.lang.IllegalStateException: Server failed to start
02-05 21:38:15.702 16467 16567 E AndroidRuntime:     at org.servalproject.servald.ServalD$4.run(ServalD.java:361)
02-05 21:38:15.702 16467 16567 E AndroidRuntime:     at java.lang.Thread.run(Thread.java:818)

Probably because all the messages related to the interface bouncing, and the java api not keeping up.

We should be able to avoid the problem if we stop listening for interface bounce messages. Just comment out this line for now;
https://github.com/servalproject/batphone/blob/e1438841d39780cd6494dfcd0ff3fa42cad54b64/src/org/servalproject/servald/PeerListService.java#L282
Everything else should still work.



On Sat, Feb 6, 2016 at 2:13 PM, 'Jason Wong' via Serval Project Developers <serval-proje...@googlegroups.com> wrote:
Here's the entire output file. I enabled ad-hoc, the superuser prompt popped up, the app crashed while the superuser prompt was still up. I pressed ok on a new prompt saying "Serval Mesh is not responding" two times. Once the app completely crashed the superuser prompt went away after awhile.

--

Jason Wong

unread,
Feb 6, 2016, 12:33:36 PM2/6/16
to Serval Project Developers
Commenting out that line fixed the app crashing while the SuperUser prompt appeared. Is this just a temporary fix though? Messages, calls and file sharing work fine, and I can now turn off Ad Hoc Mesh without it crashing.

The routing table was empty before Ad Hoc Mesh is enabled. 

Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT 


After I successfully started Ad Hoc Mesh, it looks like this:


Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT                                                       

wlan0 0000001C 00000000 0001 0 0 0 000000FE 0 0 0






      

Jason Wong

unread,
Feb 6, 2016, 3:21:57 PM2/6/16
to Serval Project Developers
FYI, I've signed up for the alpha/beta testing and tried out the apk from the playstore and it has the same crashing issue.

Jeremy Lakeman

unread,
Feb 9, 2016, 7:12:55 PM2/9/16
to Serval Project Developers
I've added a rate limit to re-detecting a network interface after a packet sending error, which should reduce the log spam and the root cause of the monitor connection dying.

I've also disabled the quit when the monitor connection goes down. We don't need to use that feature in batphone anymore, and it now just causes the app to crash.

But still doesn't answer *why* sending broadcast packets returned "network unreachable". Or why detecting adhoc doesn't always find the right configuration. I'd still like to drill into that.

So if you could build your own apk from development and perform the following;
- turn off wifi & uninstall
- start capturing the android log
- reinstall, and attempt to detect adhoc support

And then send me the whole log, I might be able to work out how we can detect adhoc support more reliably for your phone & android rom.

Or at least work out what extra logging we might need to nail this down.



--

Jason Wong

unread,
Feb 10, 2016, 10:51:55 PM2/10/16
to Serval Project Developers
Here is the file with my entire android log where it detected the wrong adhoc profile. In this case, it picked "generic", whereas the one I need is "generic-iw".


On Tuesday, February 9, 2016 at 6:12:55 PM UTC-6, Jeremy Lakeman wrote:
I've added a rate limit to re-detecting a network interface after a packet sending error, which should reduce the log spam and the root cause of the monitor connection dying.

I've also disabled the quit when the monitor connection goes down. We don't need to use that feature in batphone anymore, and it now just causes the app to crash.

But still doesn't answer *why* sending broadcast packets returned "network unreachable". Or why detecting adhoc doesn't always find the right configuration. I'd still like to drill into that.

So if you could build your own apk from development and perform the following;
- turn off wifi & uninstall
- start capturing the android log
- reinstall, and attempt to detect adhoc support

And then send me the whole log, I might be able to work out how we can detect adhoc support more reliably for your phone & android rom.

Or at least work out what extra logging we might need to nail this down.


On Sun, Feb 7, 2016 at 6:51 AM, 'Jason Wong' via Serval Project Developers <serval-proje...@googlegroups.com> wrote:
FYI, I've signed up for the alpha/beta testing and tried out the apk from the playstore and it has the same crashing issue.


On Saturday, February 6, 2016 at 11:33:36 AM UTC-6, Jason Wong wrote:
Commenting out that line fixed the app crashing while the SuperUser prompt appeared. Is this just a temporary fix though? Messages, calls and file sharing work fine, and I can now turn off Ad Hoc Mesh without it crashing.

The routing table was empty before Ad Hoc Mesh is enabled. 

Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT 


After I successfully started Ad Hoc Mesh, it looks like this:


Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT                                                       

wlan0 0000001C 00000000 0001 0 0 0 000000FE 0 0 0






      

--
You received this message because you are subscribed to the Google Groups "Serval Project Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to serval-project-developers+unsub...@googlegroups.com.
Terminal Wrong Profile

Jeremy Lakeman

unread,
Feb 11, 2016, 7:06:51 AM2/11/16
to Serval Project Developers
02-10 21:48:31.346  3093  3160 V Shell   : Starting shell: /system/bin/sh
02-10 21:48:31.366  3093  3180 V Command : /data/data/org.servalproject/bin/iw list
02-10 21:48:31.358  3182  3182 W iw      : type=1400 audit(0.0:1370): avc: denied { create } for scontext=u:r:untrusted_app:s0 tcontext=u:r:untrusted_app:s0 tclass=netlink_socket
02-10 21:48:31.371  3093  3181 V Command : Failed to connect to generic netlink.

Triggered by;
https://github.com/servalproject/batphone/blob/8128207aa75c82b4ea0c835f5be84b815d04cb60/src/org/servalproject/system/ChipsetDetection.java#L370

So SELinux config is preventing our build of iw from creating a netlink socket when run as our app user? Running this command as root *might* get around that.
This will require some refactoring to reuse the root shell we have already opened.

So we fall back to using iwconfig and profile generic instead of generic-iw


02-10 21:48:31.518  3093  3160 V BatPhone: iwconfig;
02-10 21:48:31.518  3093  3160 V BatPhone: wlan0     IEEE 802.11bgn  ESSID:"TestingMesh0.07027771884234069"  
02-10 21:48:31.518  3093  3160 V BatPhone:           Mode:Ad-Hoc  Frequency:2.462 GHz  Cell: Not-Associated   
02-10 21:48:31.518  3093  3160 V BatPhone:           Tx-Power=1496 dBm   
02-10 21:48:31.518  3093  3160 V BatPhone:           Retry  long limit:7   RTS thr:off   Fragment thr:off
02-10 21:48:31.518  3093  3160 V BatPhone:           Encryption key:off
02-10 21:48:31.518  3093  3160 V BatPhone:           Power Management:on
02-10 21:48:31.518  3093  3160 V BatPhone:          

And then iwconfig reports Mode:Ad-Hoc. Which we take as confirmation.

To unsubscribe from this group and stop receiving emails from it, send an email to serval-project-dev...@googlegroups.com.
To post to this group, send email to serval-proje...@googlegroups.com.
Visit this group at https://groups.google.com/group/serval-project-developers.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Serval Project Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to serval-project-dev...@googlegroups.com.

Jason Wong

unread,
Feb 13, 2016, 1:13:34 PM2/13/16
to Serval Project Developers
Unsharing a shared file doesn't seem to work. From what I understand, the manifest file size is set to 0 which causes it to be not displayed. Nothing seems to happen upon hitting the unshare button.

Locally, it is still in the list, with its original file size. And other devices still see the file.

Any ideas? Below is the log upon hitting the unshare button:

02-13 12:08:55.940   496   615 W AudioTrack: AUDIO_OUTPUT_FLAG_FAST denied by client

02-13 12:08:55.940 14626 14626 I servald : rhizome_database.c:41:create_rhizome_store_dir()  Rhizome datastore path = `/storage/emulated/0/Android/data/org.servalproject/files/rhizome`

02-13 12:08:55.945 14626 14626 I servald : rhizome_database.c:344:rhizome_opendb()  Opened Rhizome database /data/data/org.servalproject/var/serval-node/rhizome.db, UUID=7cc12361-66b4-4ffb-b4fb-fa655eb83bc2

02-13 12:08:57.238   496   615 W AudioTrack: AUDIO_OUTPUT_FLAG_FAST denied by client

02-13 12:08:57.241 14626 14626 D Rhizome : Rhizome.unshareFile(org.servalproject.rhizome.RhizomeManifest_File(filehash=E2B78535D5D65E1EF68FA88F7430F5B96A7646BB1D2917B80C53ED62B8B1D2D3BC0A326253BEAE9C0A83F23D9159C1D32E44EF39B408006754E6AA4E45EEE7AC, filesize=3452, BK=99E21C1DED09FF47E4128FDDD279F6A479F954AE4992A9778CF17407BD2A74DC, id=D248EC44FF42A229965DBDEA8C9B31E82D75BFF75BD6281B53B163A6748A40E4, date=1455386637798, name=open_gapps_log.txt, version=1455386637795, service=file))

02-13 12:08:57.242 14626 14626 I servald : rhizome_database.c:41:create_rhizome_store_dir()  Rhizome datastore path = `/storage/emulated/0/Android/data/org.servalproject/files/rhizome`

02-13 12:08:57.244 14626 14626 I servald : rhizome_database.c:344:rhizome_opendb()  Opened Rhizome database /data/data/org.servalproject/var/serval-node/rhizome.db, UUID=7cc12361-66b4-4ffb-b4fb-fa655eb83bc2

02-13 12:08:57.283 14626 14626 D Rhizome : unsharedManifest=org.servalproject.rhizome.RhizomeManifest_File(filehash=E2B78535D5D65E1EF68FA88F7430F5B96A7646BB1D2917B80C53ED62B8B1D2D3BC0A326253BEAE9C0A83F23D9159C1D32E44EF39B408006754E6AA4E45EEE7AC, filesize=3452, BK=99E21C1DED09FF47E4128FDDD279F6A479F954AE4992A9778CF17407BD2A74DC, id=D248EC44FF42A229965DBDEA8C9B31E82D75BFF75BD6281B53B163A6748A40E4, date=1455386637798, name=open_gapps_log.txt, version=1455386637795, service=file)

02-13 12:08:57.325 14626 14626 I servald : rhizome_database.c:41:create_rhizome_store_dir()  Rhizome datastore path = `/storage/emulated/0/Android/data/org.servalproject/files/rhizome`

02-13 12:08:57.328 14626 14626 I servald : rhizome_database.c:344:rhizome_opendb()  Opened Rhizome database /data/data/org.servalproject/var/serval-node/rhizome.db, UUID=7cc12361-66b4-4ffb-b4fb-fa655eb83bc2

02-13 12:08:57.331 14626 14626 D Rhizome : service=null

02-13 12:08:57.331 14626 14626 D Rhizome : manifestId=null

02-13 12:08:57.331 14626 14626 D Rhizome : fileSize=0

02-13 12:08:57.331 14626 14626 D Rhizome : fileHash=null

02-13 12:08:57.340 14626 14626 V ServalDCursor: Filling cursor offset=0 numRows=-1

02-13 12:08:57.376 14626 14626 I servald : rhizome_database.c:41:create_rhizome_store_dir()  Rhizome datastore path = `/storage/emulated/0/Android/data/org.servalproject/files/rhizome`

02-13 12:08:57.379 14626 14626 I servald : rhizome_database.c:344:rhizome_opendb()  Opened Rhizome database /data/data/org.servalproject/var/serval-node/rhizome.db, UUID=7cc12361-66b4-4ffb-b4fb-fa655eb83bc2

02-13 12:08:57.381 14626 14626 V ServalDCursor: Returned 0-1 rows of 1


To unsubscribe from this group and stop receiving emails from it, send an email to serval-project-developers+unsub...@googlegroups.com.
To post to this group, send email to serval-proje...@googlegroups.com.
Visit this group at https://groups.google.com/group/serval-project-developers.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Serval Project Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to serval-project-developers+unsub...@googlegroups.com.

Jeremy Lakeman

unread,
Feb 14, 2016, 10:07:54 PM2/14/16
to Serval Project Developers
9b15d6a should fix this detection issue.


Jason Wong

unread,
Feb 15, 2016, 1:26:22 PM2/15/16
to Serval Project Developers
I'm absolutely amazed at your help! Thanks so much.

The file unsharing is definitely working now.

The ad hoc mesh testing now crashes. Looks like we need to account for null objects.

E/AndroidRuntime(18809): FATAL EXCEPTION: WifiControl

E/AndroidRuntime(18809): Process: org.servalproject, PID: 18809

E/AndroidRuntime(18809): java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.compareToIgnoreCase(java.lang.String)' on a null object reference

E/AndroidRuntime(18809): at org.servalproject.system.Chipset.compareTo(Chipset.java:173)

E/AndroidRuntime(18809): at org.servalproject.system.Chipset.compareTo(Chipset.java:36)

E/AndroidRuntime(18809): at java.util.TreeMap.find(TreeMap.java:277)

E/AndroidRuntime(18809): at java.util.TreeMap.putInternal(TreeMap.java:240)

E/AndroidRuntime(18809): at java.util.TreeMap.put(TreeMap.java:186)

E/AndroidRuntime(18809): at java.util.TreeSet.add(TreeSet.java:113)

E/AndroidRuntime(18809): at org.servalproject.system.ChipsetDetection.inventSupport(ChipsetDetection.java:430)

E/AndroidRuntime(18809): at org.servalproject.system.ChipsetDetection.getDetectedChipsets(ChipsetDetection.java:611)

E/AndroidRuntime(18809): at org.servalproject.system.WifiAdhocControl.testAdhoc(WifiAdhocControl.java:328)

E/AndroidRuntime(18809): at org.servalproject.system.WifiControl.testAdhoc(WifiControl.java:1191)

E/AndroidRuntime(18809): at org.servalproject.PreparationWizard.next(PreparationWizard.java:145)

E/AndroidRuntime(18809): at org.servalproject.PreparationWizard.access$000(PreparationWizard.java:50)

E/AndroidRuntime(18809): at org.servalproject.PreparationWizard$1.handleMessage(PreparationWizard.java:82)

E/AndroidRuntime(18809): at android.os.Handler.dispatchMessage(Handler.java:102)

E/AndroidRuntime(18809): at android.os.Looper.loop(Looper.java:135)

E/AndroidRuntime(18809): at android.os.HandlerThread.run(HandlerThread.java:61)

To unsubscribe from this group and stop receiving emails from it, send an email to serval-project-developers+unsub...@googlegroups.com.
To post to this group, send email to serval-proje...@googlegroups.com.
Visit this group at https://groups.google.com/group/serval-project-developers.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Serval Project Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to serval-project-developers+unsub...@googlegroups.com.

Jeremy Lakeman

unread,
Feb 15, 2016, 5:44:29 PM2/15/16
to Serval Project Developers
99bf29a Should fix it.

To unsubscribe from this group and stop receiving emails from it, send an email to serval-project-dev...@googlegroups.com.
To post to this group, send email to serval-proje...@googlegroups.com.
Visit this group at https://groups.google.com/group/serval-project-developers.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Serval Project Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to serval-project-dev...@googlegroups.com.

To post to this group, send email to serval-proje...@googlegroups.com.
Visit this group at https://groups.google.com/group/serval-project-developers.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Serval Project Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to serval-project-dev...@googlegroups.com.

Jason Wong

unread,
Feb 15, 2016, 6:18:07 PM2/15/16
to Serval Project Developers
Everything is working perfectly on my end now. Thanks for all the help!
Reply all
Reply to author
Forward
0 new messages