Преглед изворни кода

configurable read and write buffer size

v2ray пре 9 година
родитељ
комит
f6d4e599bd
2 измењених фајлова са 25 додато и 7 уклоњено
  1. 2 2
      transport/internet/kcp/config.go
  2. 23 5
      transport/internet/kcp/config_json.go

+ 2 - 2
transport/internet/kcp/config.go

@@ -49,8 +49,8 @@ func DefaultConfig() Config {
 		UplinkCapacity:   5,
 		DownlinkCapacity: 20,
 		Congestion:       false,
-		WriteBuffer:      4 * 1024 * 1024,
-		ReadBuffer:       4 * 1024 * 1024,
+		WriteBuffer:      1 * 1024 * 1024,
+		ReadBuffer:       1 * 1024 * 1024,
 	}
 }
 

+ 23 - 5
transport/internet/kcp/config_json.go

@@ -11,11 +11,13 @@ import (
 
 func (this *Config) UnmarshalJSON(data []byte) error {
 	type JSONConfig struct {
-		Mtu        *uint32 `json:"mtu"`
-		Tti        *uint32 `json:"tti"`
-		UpCap      *uint32 `json:"uplinkCapacity"`
-		DownCap    *uint32 `json:"downlinkCapacity"`
-		Congestion *bool   `json:"congestion"`
+		Mtu             *uint32 `json:"mtu"`
+		Tti             *uint32 `json:"tti"`
+		UpCap           *uint32 `json:"uplinkCapacity"`
+		DownCap         *uint32 `json:"downlinkCapacity"`
+		Congestion      *bool   `json:"congestion"`
+		ReadBufferSize  *uint32 `json:"readBufferSize"`
+		WriteBufferSize *uint32 `json:"writeBufferSize"`
 	}
 	jsonConfig := new(JSONConfig)
 	if err := json.Unmarshal(data, &jsonConfig); err != nil {
@@ -46,6 +48,22 @@ func (this *Config) UnmarshalJSON(data []byte) error {
 	if jsonConfig.Congestion != nil {
 		this.Congestion = *jsonConfig.Congestion
 	}
+	if jsonConfig.ReadBufferSize != nil {
+		size := *jsonConfig.ReadBufferSize
+		if size > 0 {
+			this.ReadBuffer = size * 1024 * 1024
+		} else {
+			this.ReadBuffer = 512 * 1024
+		}
+	}
+	if jsonConfig.WriteBufferSize != nil {
+		size := *jsonConfig.WriteBufferSize
+		if size > 0 {
+			this.WriteBuffer = size * 1024 * 1024
+		} else {
+			this.WriteBuffer = 512 * 1024
+		}
+	}
 
 	return nil
 }