|
|
@@ -2,6 +2,7 @@ package core
|
|
|
|
|
|
import (
|
|
|
"context"
|
|
|
+ "runtime"
|
|
|
"sync"
|
|
|
"time"
|
|
|
|
|
|
@@ -67,17 +68,27 @@ type PolicyManager interface {
|
|
|
ForSystem() SystemPolicy
|
|
|
}
|
|
|
|
|
|
-var defaultBufferSize int32 = 2 * 1024 * 1024
|
|
|
+var defaultBufferSize int32
|
|
|
|
|
|
func init() {
|
|
|
const key = "v2ray.ray.buffer.size"
|
|
|
+ const defaultValue = -17
|
|
|
size := platform.EnvFlag{
|
|
|
Name: key,
|
|
|
AltName: platform.NormalizeEnvName(key),
|
|
|
- }.GetValueAsInt(10)
|
|
|
- if size == 0 {
|
|
|
- defaultBufferSize = -1
|
|
|
- } else {
|
|
|
+ }.GetValueAsInt(defaultValue)
|
|
|
+
|
|
|
+ switch size {
|
|
|
+ case 0:
|
|
|
+ defaultBufferSize = -1 // For pipe to use unlimited size
|
|
|
+ case defaultValue: // Env flag not defined. Use default values per CPU-arch.
|
|
|
+ switch runtime.GOARCH {
|
|
|
+ case "arm", "mips", "mipsle", "mips64", "mips64le":
|
|
|
+ defaultBufferSize = 0 // Disable pipe caching for low-end devices
|
|
|
+ default:
|
|
|
+ defaultBufferSize = 2 * 1024 * 1024
|
|
|
+ }
|
|
|
+ default:
|
|
|
defaultBufferSize = int32(size) * 1024 * 1024
|
|
|
}
|
|
|
}
|