Standard output
I: t+0.09s : [ChainSocketServer: test] init
D: t+0.09s : [ChainSocketServer: test] accepted new client
D: t+0.09s : [ChainSocketServer: test] /127.0.0.1:55202 : init client - reading init request...
D: t+0.09s : [ChainSocketServer: test] /127.0.0.1:55202 : receive init request to connect to /169.254.1.59:36641
D: t+0.09s : [ChainSocketServer: test] /127.0.0.1:55202 : created onward socket
D: t+0.09s : [ChainSocketServer: test] /127.0.0.1:55202 : wrote chain init response
V: t+0.09s : [ChainSocketServer: test] /127.0.0.1:55202 : CopyStream: onwardToIncoming - start copying input to output
V: t+0.1s : [ChainSocketServer: test] /127.0.0.1:55202 : CopyStream: incomingToOnward - start copying input to output
V: t+0.1s : [ChainSocketServer: test] /127.0.0.1:55202 : CopyStream: onwardToIncoming - finished copying - reached end of stream
W: t+0.1s : [ChainSocketServer: test] /127.0.0.1:55202: CopyStream: aborting java.net.SocketException: Socket closed
at java.base/sun.nio.ch.NioSocketImpl.endRead(NioSocketImpl.java:248)
at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:327)
at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:350)
at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:803)
at java.base/java.net.Socket$SocketInputStream.read(Socket.java:966)
at java.base/java.io.InputStream.read(InputStream.java:218)
at kotlin.io.ByteStreamsKt.copyTo(IOStreams.kt:106)
at kotlin.io.ByteStreamsKt.copyTo$default(IOStreams.kt:103)
at com.ustadmobile.meshrabiya.vnet.socket.ChainSocketServer$CopyStreamRunnable.run(ChainSocketServer.kt:144)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
I: t+0.05s : [ChainSocketServer: server2] init
I: t+0.05s : [ChainSocketServer: server1] init
D: t+0.05s : [ChainSocketServer: server1] accepted new client
D: t+0.05s : [ChainSocketServer: server1] /127.0.0.1:48762 : init client - reading init request...
D: t+0.05s : [ChainSocketServer: server1] /127.0.0.1:48762 : receive init request to connect to /169.254.108.47:34101
localhost/127.0.0.1:33031 is not final destination - write init request and get response
D: t+0.05s : [ChainSocketServer: server2] accepted new client
D: t+0.05s : [ChainSocketServer: server2] /127.0.0.1:54289 : init client - reading init request...
D: t+0.05s : [ChainSocketServer: server2] /127.0.0.1:54289 : receive init request to connect to /169.254.108.47:34101
I: t+0.06s : [ChainSocket for /169.254.100.230] created socket to /169.254.108.47:34101 nexthop = localhost/127.0.0.1:34101
D: t+0.06s : [ChainSocketServer: server2] /127.0.0.1:54289 : created onward socket
D: t+0.06s : [ChainSocketServer: server2] /127.0.0.1:54289 : wrote chain init response
localhost/127.0.0.1:33031 got init response
I: t+0.06s : [ChainSocket for /169.254.47.0] created socket to /169.254.108.47:33031 nexthop = localhost/127.0.0.1:33031
D: t+0.06s : [ChainSocketServer: server1] /127.0.0.1:48762 : created onward socket
D: t+0.06s : [ChainSocketServer: server1] /127.0.0.1:48762 : wrote chain init response
V: t+0.06s : [ChainSocketServer: server2] /127.0.0.1:54289 : CopyStream: onwardToIncoming - start copying input to output
V: t+0.06s : [ChainSocketServer: server2] /127.0.0.1:54289 : CopyStream: incomingToOnward - start copying input to output
V: t+0.06s : [ChainSocketServer: server1] /127.0.0.1:48762 : CopyStream: onwardToIncoming - start copying input to output
V: t+0.06s : [ChainSocketServer: server1] /127.0.0.1:48762 : CopyStream: incomingToOnward - start copying input to output
V: t+0.06s : [ChainSocketServer: server2] /127.0.0.1:54289 : CopyStream: onwardToIncoming - finished copying - reached end of stream
W: t+0.06s : [ChainSocketServer: server2] /127.0.0.1:54289: CopyStream: aborting java.net.SocketException: Socket closed
at java.base/sun.nio.ch.NioSocketImpl.endRead(NioSocketImpl.java:248)
at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:327)
at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:350)
at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:803)
at java.base/java.net.Socket$SocketInputStream.read(Socket.java:966)
at java.base/java.io.InputStream.read(InputStream.java:218)
at kotlin.io.ByteStreamsKt.copyTo(IOStreams.kt:106)
at kotlin.io.ByteStreamsKt.copyTo$default(IOStreams.kt:103)
at com.ustadmobile.meshrabiya.vnet.socket.ChainSocketServer$CopyStreamRunnable.run(ChainSocketServer.kt:144)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
V: t+0.06s : [ChainSocketServer: server1] /127.0.0.1:48762 : CopyStream: onwardToIncoming - finished copying - reached end of stream
W: t+0.06s : [ChainSocketServer: server1] /127.0.0.1:48762: CopyStream: aborting java.net.SocketException: Socket closed
at java.base/sun.nio.ch.NioSocketImpl.endRead(NioSocketImpl.java:248)
at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:327)
at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:350)
at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:803)
at java.base/java.net.Socket$SocketInputStream.read(Socket.java:966)
at java.base/java.io.InputStream.read(InputStream.java:218)
at kotlin.io.ByteStreamsKt.copyTo(IOStreams.kt:106)
at kotlin.io.ByteStreamsKt.copyTo$default(IOStreams.kt:103)
at com.ustadmobile.meshrabiya.vnet.socket.ChainSocketServer$CopyStreamRunnable.run(ChainSocketServer.kt:144)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
I: t+0.07s : [ChainSocketServer: server1] closed
I: t+0.07s : [ChainSocketServer: server2] closed
I: t+0.0s : [ChainSocketServer: server2] init
I: t+0.0s : [ChainSocketServer: server1] init
D: t+0.0s : [ChainSocketServer: server1] accepted new client
D: t+0.0s : [ChainSocketServer: server1] /127.0.0.1:39330 : init client - reading init request...
D: t+0.0s : [ChainSocketServer: server1] /127.0.0.1:39330 : receive init request to connect to /169.254.76.190:45611
D: t+0.0s : [ChainSocketServer: server2] accepted new client
localhost/127.0.0.1:37341 is not final destination - write init request and get response
D: t+0.0s : [ChainSocketServer: server2] /127.0.0.1:59810 : init client - reading init request...
D: t+0.0s : [ChainSocketServer: server2] /127.0.0.1:59810 : receive init request to connect to /169.254.76.190:45611
I: t+0.01s : [ChainSocketFactoryImpl for /169.254.66.4] created socket to /169.254.76.190:45611 nexthop = localhost/127.0.0.1:45611
D: t+0.01s : [ChainSocketServer: server2] /127.0.0.1:59810 : created onward socket
localhost/127.0.0.1:37341 got init response
I: t+0.01s : [ChainSocketFactoryImpl for /169.254.19.216] created socket to /169.254.76.190:45611 nexthop = localhost/127.0.0.1:37341
D: t+0.01s : [ChainSocketServer: server1] /127.0.0.1:39330 : created onward socket
D: t+0.01s : [ChainSocketServer: server1] /127.0.0.1:39330 : wrote chain init response
D: t+0.01s : [ChainSocketServer: server2] /127.0.0.1:59810 : wrote chain init response
V: t+0.01s : [ChainSocketServer: server1] /127.0.0.1:39330 : CopyStream: onwardToIncoming - start copying input to output
V: t+0.01s : [ChainSocketServer: server1] /127.0.0.1:39330 : CopyStream: incomingToOnward - start copying input to output
V: t+0.01s : [ChainSocketServer: server2] /127.0.0.1:59810 : CopyStream: onwardToIncoming - start copying input to output
V: t+0.01s : [ChainSocketServer: server2] /127.0.0.1:59810 : CopyStream: incomingToOnward - start copying input to output
V: t+0.01s : [ChainSocketServer: server2] /127.0.0.1:59810 : CopyStream: onwardToIncoming - finished copying - reached end of stream
V: t+0.01s : [ChainSocketServer: server1] /127.0.0.1:39330 : CopyStream: onwardToIncoming - finished copying - reached end of stream
W: t+0.01s : [ChainSocketServer: server1] /127.0.0.1:39330: CopyStream: aborting java.net.SocketException: Socket closed
at java.base/sun.nio.ch.NioSocketImpl.endRead(NioSocketImpl.java:248)
at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:327)
at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:350)
at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:803)
at java.base/java.net.Socket$SocketInputStream.read(Socket.java:966)
at java.base/java.io.InputStream.read(InputStream.java:218)
at kotlin.io.ByteStreamsKt.copyTo(IOStreams.kt:106)
at kotlin.io.ByteStreamsKt.copyTo$default(IOStreams.kt:103)
at com.ustadmobile.meshrabiya.vnet.socket.ChainSocketServer$CopyStreamRunnable.run(ChainSocketServer.kt:144)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
W: t+0.01s : [ChainSocketServer: server2] /127.0.0.1:59810: CopyStream: aborting java.net.SocketException: Socket closed
at java.base/sun.nio.ch.NioSocketImpl.endRead(NioSocketImpl.java:248)
at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:327)
at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:350)
at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:803)
at java.base/java.net.Socket$SocketInputStream.read(Socket.java:966)
at java.base/java.io.InputStream.read(InputStream.java:218)
at kotlin.io.ByteStreamsKt.copyTo(IOStreams.kt:106)
at kotlin.io.ByteStreamsKt.copyTo$default(IOStreams.kt:103)
at com.ustadmobile.meshrabiya.vnet.socket.ChainSocketServer$CopyStreamRunnable.run(ChainSocketServer.kt:144)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
I: t+0.02s : [ChainSocketServer: server1] closed
I: t+0.02s : [ChainSocketServer: server2] closed