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