Skip to content

Bug: Ping does not make it clear it's failing #26

@ccameron-gb

Description

@ccameron-gb

I have two devices that were connected but have somehow become disconnected. One of the two devices doesn't realize this.

The oblivious device (Android 9):

Image

Logcat from the oblivious device (it knows!):

I  Caused by: android.system.ErrnoException: sendto failed: ENETUNREACH (Network is unreachable)
I  	at libcore.io.Linux.sendtoBytes(Native Method)
I  	at libcore.io.Linux.sendto(Linux.java:227)
I  	at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:307)
I  	at libcore.io.IoBridge.sendto(IoBridge.java:542)
I  	... 12 more
I  V: t+315.22s : [VirtualNode 169.254.73.179] received MMCP message (MmcpOriginatorMessage) from 169.254.44.101
I  V: t+315.22s : [OriginatingMessageManager for /169.254.73.179]  received originating message from 169.254.44.101 via 169.254.44.101
I  V: t+315.22s : [OriginatingMessageManager for /169.254.73.179]  received originating message from 169.254.44.101 via 169.254.44.101 messageId=196  hopCount=1 sentTime=1741281077543  Currently known: senttime=1741281074544  hop count = 1 isMoreRecentOrBetter=true 
I  V: t+315.22s : [OriginatingMessageManager for /169.254.73.179]  update originator messages: currently known nodes = 169.254.44.101
W  requestLayout() improperly called by androidx.compose.ui.platform.ViewLayerContainer{2aeeda1 V.E...... ......ID 0,0-0,0} during layout: running second layout pass
I  V: t+316.02s : [OriginatingMessageManager for /169.254.73.179]  sending originating message messageId=109 sentTime=1741281088352
I  W: t+316.03s : [OriginatingMessageManager for /169.254.73.179]  : sendOriginatingMessagesRunnable: exception sending to 169.254.44.101 through /fe80::29a:cdff:fe56:865%p2p0:45497 java.io.IOException: sendto failed: ENETUNREACH (Network is unreachable)
I  	at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:576)
I  	at libcore.io.IoBridge.sendto(IoBridge.java:544)
I  	at java.net.PlainDatagramSocketImpl.send(PlainDatagramSocketImpl.java:125)
I  	at java.net.DatagramSocket.send(DatagramSocket.java:721)
I  	at com.ustadmobile.meshrabiya.vnet.VirtualNodeDatagramSocket.send(VirtualNodeDatagramSocket.kt:89)
I  	at com.ustadmobile.meshrabiya.vnet.OriginatingMessageManager.sendOriginatingMessageRunnable$lambda$3(OriginatingMessageManager.kt:106)
I  	at com.ustadmobile.meshrabiya.vnet.OriginatingMessageManager.$r8$lambda$86AJACYDp5EpSDScyONjL9vuXGg(Unknown Source:0)
I  	at com.ustadmobile.meshrabiya.vnet.OriginatingMessageManager$$ExternalSyntheticLambda2.run(D8$$SyntheticClass:0)
I  	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458)
I  	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:307)
I  	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:302)
I  	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
I  	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
I  	at java.lang.Thread.run(Thread.java:764)
I  Caused by: android.system.ErrnoException: sendto failed: ENETUNREACH (Network is unreachable)
I  	at libcore.io.Linux.sendtoBytes(Native Method)
I  	at libcore.io.Linux.sendto(Linux.java:227)
I  	at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:307)
I  	at libcore.io.IoBridge.sendto(IoBridge.java:542)
I  	... 12 more
I  V: t+318.22s : [VirtualNode 169.254.73.179] received MMCP message (MmcpOriginatorMessage) from 169.254.44.101
I  V: t+318.22s : [OriginatingMessageManager for /169.254.73.179]  received originating message from 169.254.44.101 via 169.254.44.101
I  V: t+318.22s : [OriginatingMessageManager for /169.254.73.179]  received originating message from 169.254.44.101 via 169.254.44.101 messageId=197  hopCount=1 sentTime=1741281080544  Currently known: senttime=1741281077543  hop count = 1 isMoreRecentOrBetter=true 
I  V: t+318.22s : [OriginatingMessageManager for /169.254.73.179]  update originator messages: currently known nodes = 169.254.44.101
W  requestLayout() improperly called by androidx.compose.ui.platform.ViewLayerContainer{2aeeda1 V.E...... ......ID 0,0-0,0} during layout: running second layout pass
I  V: t+319.03s : [OriginatingMessageManager for /169.254.73.179]  sending originating message messageId=110 sentTime=1741281091353
I  W: t+319.03s : [OriginatingMessageManager for /169.254.73.179]  : sendOriginatingMessagesRunnable: exception sending to 169.254.44.101 through /fe80::29a:cdff:fe56:865%p2p0:45497 java.io.IOException: sendto failed: ENETUNREACH (Network is unreachable)
I  	at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:576)
I  	at libcore.io.IoBridge.sendto(IoBridge.java:544)
I  	at java.net.PlainDatagramSocketImpl.send(PlainDatagramSocketImpl.java:125)
I  	at java.net.DatagramSocket.send(DatagramSocket.java:721)
I  	at com.ustadmobile.meshrabiya.vnet.VirtualNodeDatagramSocket.send(VirtualNodeDatagramSocket.kt:89)
I  	at com.ustadmobile.meshrabiya.vnet.OriginatingMessageManager.sendOriginatingMessageRunnable$lambda$3(OriginatingMessageManager.kt:106)
I  	at com.ustadmobile.meshrabiya.vnet.OriginatingMessageManager.$r8$lambda$86AJACYDp5EpSDScyONjL9vuXGg(Unknown Source:0)
I  	at com.ustadmobile.meshrabiya.vnet.OriginatingMessageManager$$ExternalSyntheticLambda2.run(D8$$SyntheticClass:0)
I  	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458)
I  	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:307)
I  	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:302)
I  	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
I  	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
I  	at java.lang.Thread.run(Thread.java:764)
I  Caused by: android.system.ErrnoException: sendto failed: ENETUNREACH (Network is unreachable)
I  	at libcore.io.Linux.sendtoBytes(Native Method)
I  	at libcore.io.Linux.sendto(Linux.java:227)
I  	at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:307)
I  	at libcore.io.IoBridge.sendto(IoBridge.java:542)
I  	... 12 more

The fix: Display a status message so the user knows that ping is actually failing (the way Windows does), or don't display any output (the way Linux does).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions