Optimized packet buffers. (#26)

This commit is contained in:
Revertron 2022-11-01 13:43:35 +01:00 committed by GitHub
parent aa725fbf8f
commit 8615d43761
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,16 +1,12 @@
package eu.neilalexander.yggdrasil
import android.content.*
import android.net.Uri
import android.net.VpnService
import android.os.Handler
import android.os.Message
import android.os.ParcelFileDescriptor
import android.system.OsConstants
import android.util.Log
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import mobile.Yggdrasil
import org.json.JSONArray
import java.io.FileInputStream
import java.io.FileOutputStream
import java.util.concurrent.atomic.AtomicBoolean
@ -208,6 +204,7 @@ class PacketTunnelProvider: VpnService() {
}
private fun writer() {
val buf = ByteArray(65535)
writes@ while (started.get()) {
val writerStream = writerStream
val writerThread = writerThread
@ -218,8 +215,10 @@ class PacketTunnelProvider: VpnService() {
break@writes
}
try {
val b = yggdrasil.recv()
writerStream.write(b)
val len = yggdrasil.recvBuffer(buf)
if (len > 0) {
writerStream.write(buf, 0, len.toInt())
}
} catch (e: Exception) {
break@writes
}
@ -243,7 +242,7 @@ class PacketTunnelProvider: VpnService() {
}
try {
val n = readerStream.read(b)
yggdrasil.send(b.sliceArray(0..n))
yggdrasil.sendBuffer(b, n.toLong())
} catch (e: Exception) {
break@reads
}