mirror of
https://github.com/XTLS/REALITY.git
synced 2025-08-24 15:38:36 +00:00
read
This commit is contained in:
parent
8a58ed1c1a
commit
82f8367c40
22
tls.go
22
tls.go
@ -108,8 +108,8 @@ type RatelimitedConn struct {
|
|||||||
LimitAfter int64
|
LimitAfter int64
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *RatelimitedConn) Write(b []byte) (int, error) {
|
func (c *RatelimitedConn) Read(b []byte) (int, error) {
|
||||||
n, err := c.Conn.Write(b)
|
n, err := c.Conn.Read(b)
|
||||||
if n != 0 {
|
if n != 0 {
|
||||||
if c.LimitAfter <= 0 {
|
if c.LimitAfter <= 0 {
|
||||||
c.Bucket.Wait(int64(n))
|
c.Bucket.Wait(int64(n))
|
||||||
@ -266,11 +266,11 @@ func Server(ctx context.Context, conn net.Conn, config *Config) (*Conn, error) {
|
|||||||
io.Copy(target, underlying)
|
io.Copy(target, underlying)
|
||||||
} else {
|
} else {
|
||||||
// Limit upload speed for fallback connection
|
// Limit upload speed for fallback connection
|
||||||
io.Copy(&RatelimitedConn{
|
io.Copy(target, &RatelimitedConn{
|
||||||
Conn: target,
|
Conn: underlying,
|
||||||
Bucket: NewBucketWithRate(config.LimitFallbackUpload.BytesPerSec, config.LimitFallbackUpload.BurstBytesPerSec),
|
Bucket: NewBucketWithRate(config.LimitFallbackUpload.BytesPerSec, config.LimitFallbackUpload.BurstBytesPerSec),
|
||||||
LimitAfter: ToInt64(config.LimitFallbackUpload.AfterBytes) - ToInt64(config.LimitFallbackUpload.BurstBytesPerSec),
|
LimitAfter: ToInt64(config.LimitFallbackUpload.AfterBytes) - ToInt64(config.LimitFallbackUpload.BurstBytesPerSec),
|
||||||
}, underlying)
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
waitGroup.Done()
|
waitGroup.Done()
|
||||||
@ -406,11 +406,11 @@ func Server(ctx context.Context, conn net.Conn, config *Config) (*Conn, error) {
|
|||||||
io.Copy(target, underlying)
|
io.Copy(target, underlying)
|
||||||
} else {
|
} else {
|
||||||
// Limit upload speed for fallback connection (handshake ok but hello failed)
|
// Limit upload speed for fallback connection (handshake ok but hello failed)
|
||||||
io.Copy(&RatelimitedConn{
|
io.Copy(target, &RatelimitedConn{
|
||||||
Conn: target,
|
Conn: underlying,
|
||||||
Bucket: NewBucketWithRate(config.LimitFallbackUpload.BytesPerSec, config.LimitFallbackUpload.BurstBytesPerSec),
|
Bucket: NewBucketWithRate(config.LimitFallbackUpload.BytesPerSec, config.LimitFallbackUpload.BurstBytesPerSec),
|
||||||
LimitAfter: ToInt64(config.LimitFallbackUpload.AfterBytes) - ToInt64(config.LimitFallbackUpload.BurstBytesPerSec),
|
LimitAfter: ToInt64(config.LimitFallbackUpload.AfterBytes) - ToInt64(config.LimitFallbackUpload.BurstBytesPerSec),
|
||||||
}, underlying)
|
})
|
||||||
}
|
}
|
||||||
waitGroup.Done()
|
waitGroup.Done()
|
||||||
}()
|
}()
|
||||||
@ -420,11 +420,11 @@ func Server(ctx context.Context, conn net.Conn, config *Config) (*Conn, error) {
|
|||||||
io.Copy(underlying, target)
|
io.Copy(underlying, target)
|
||||||
} else {
|
} else {
|
||||||
// Limit download speed for fallback connection
|
// Limit download speed for fallback connection
|
||||||
io.Copy(&RatelimitedConn{
|
io.Copy(underlying, &RatelimitedConn{
|
||||||
Conn: underlying,
|
Conn: target,
|
||||||
Bucket: NewBucketWithRate(config.LimitFallbackDownload.BytesPerSec, config.LimitFallbackDownload.BurstBytesPerSec),
|
Bucket: NewBucketWithRate(config.LimitFallbackDownload.BytesPerSec, config.LimitFallbackDownload.BurstBytesPerSec),
|
||||||
LimitAfter: ToInt64(config.LimitFallbackDownload.AfterBytes) - ToInt64(config.LimitFallbackDownload.BurstBytesPerSec),
|
LimitAfter: ToInt64(config.LimitFallbackDownload.AfterBytes) - ToInt64(config.LimitFallbackDownload.BurstBytesPerSec),
|
||||||
}, target)
|
})
|
||||||
}
|
}
|
||||||
// Here is bidirectional direct forwarding:
|
// Here is bidirectional direct forwarding:
|
||||||
// client ---underlying--- server ---target--- dest
|
// client ---underlying--- server ---target--- dest
|
||||||
|
Loading…
Reference in New Issue
Block a user