Procházet zdrojové kódy

Get rid of buffersize everywhere

tags/v2.1.3^2
9seconds před 4 roky
rodič
revize
66f4d967e7

+ 2
- 0
mtglib/init.go Zobrazit soubor

@@ -61,6 +61,8 @@ const (
61 61
 	DefaultConcurrency = 4096
62 62
 
63 63
 	// DefaultBufferSize is a default size of a copy buffer.
64
+	//
65
+	// Deprecated: this setting no longer makes any effect.
64 66
 	DefaultBufferSize = 16 * 1024 // 16 kib
65 67
 
66 68
 	// DefaultDomainFrontingPort is a default port (HTTPS) to connect to in

+ 0
- 19
mtglib/internal/relay/conn.go Zobrazit soubor

@@ -1,19 +0,0 @@
1
-package relay
2
-
3
-import (
4
-	"fmt"
5
-	"net"
6
-	"time"
7
-)
8
-
9
-type conn struct {
10
-	net.Conn
11
-}
12
-
13
-func (c conn) Read(p []byte) (int, error) {
14
-	if err := c.SetReadDeadline(time.Now().Add(getTimeout())); err != nil {
15
-		return 0, fmt.Errorf("cannot set read deadline: %w", err)
16
-	}
17
-
18
-	return c.Conn.Read(p) // nolint: wrapcheck
19
-}

+ 1
- 6
mtglib/internal/relay/init.go Zobrazit soubor

@@ -1,12 +1,7 @@
1 1
 package relay
2 2
 
3
-import "time"
4
-
5 3
 const (
6
-	ConnectionTimeToLiveMin = 2 * time.Minute
7
-	ConnectionTimeToLiveMax = 10 * time.Minute
8
-	TimeoutMin              = 20 * time.Second
9
-	TimeoutMax              = time.Minute
4
+	bufferSize = 32 * 1024
10 5
 )
11 6
 
12 7
 type Logger interface {

+ 5
- 10
mtglib/internal/relay/pools.go Zobrazit soubor

@@ -9,21 +9,16 @@ type eastWest struct {
9 9
 
10 10
 var eastWestPool = sync.Pool{
11 11
 	New: func() interface{} {
12
-		return &eastWest{}
12
+		return &eastWest{
13
+			east: make([]byte, bufferSize),
14
+			west: make([]byte, bufferSize),
15
+		}
13 16
 	},
14 17
 }
15 18
 
16
-func acquireEastWest(bufferSize int) *eastWest {
19
+func acquireEastWest() *eastWest {
17 20
 	wanted := eastWestPool.Get().(*eastWest) // nolint: forcetypeassert
18 21
 
19
-	if len(wanted.east) != bufferSize {
20
-		wanted.east = make([]byte, bufferSize)
21
-	}
22
-
23
-	if len(wanted.west) != bufferSize {
24
-		wanted.west = make([]byte, bufferSize)
25
-	}
26
-
27 22
 	return wanted
28 23
 }
29 24
 

+ 3
- 9
mtglib/internal/relay/relay.go Zobrazit soubor

@@ -3,16 +3,14 @@ package relay
3 3
 import (
4 4
 	"context"
5 5
 	"io"
6
-	"net"
7 6
 	"sync"
8 7
 )
9 8
 
10
-func Relay(ctx context.Context, log Logger, bufferSize int,
11
-	telegramConn net.Conn, clientConn io.ReadWriteCloser) {
9
+func Relay(ctx context.Context, log Logger, telegramConn, clientConn io.ReadWriteCloser) {
12 10
 	defer telegramConn.Close()
13 11
 	defer clientConn.Close()
14 12
 
15
-	ctx, cancel := context.WithTimeout(ctx, getConnectionTimeToLive())
13
+	ctx, cancel := context.WithCancel(ctx)
16 14
 	defer cancel()
17 15
 
18 16
 	go func() {
@@ -21,13 +19,9 @@ func Relay(ctx context.Context, log Logger, bufferSize int,
21 19
 		clientConn.Close()
22 20
 	}()
23 21
 
24
-	buffers := acquireEastWest(bufferSize)
22
+	buffers := acquireEastWest()
25 23
 	defer releaseEastWest(buffers)
26 24
 
27
-	telegramConn = conn{
28
-		Conn: telegramConn,
29
-	}
30
-
31 25
 	wg := &sync.WaitGroup{}
32 26
 	wg.Add(2) // nolint: gomnd
33 27
 

+ 1
- 3
mtglib/internal/relay/relay_test.go Zobrazit soubor

@@ -37,7 +37,6 @@ func (suite *RelayTestSuite) TearDownTest() {
37 37
 }
38 38
 
39 39
 func (suite *RelayTestSuite) TestExit() {
40
-	suite.telegramConnMock.On("SetReadDeadline", mock.Anything).Return(nil)
41 40
 	suite.telegramConnMock.On("Close").Return(nil)
42 41
 	suite.telegramConnMock.On("Read", mock.Anything).Return(10, io.EOF).Once()
43 42
 	suite.telegramConnMock.On("Write", mock.Anything).Return(10, io.EOF).Maybe()
@@ -46,8 +45,7 @@ func (suite *RelayTestSuite) TestExit() {
46 45
 	suite.clientConnMock.On("Write", mock.Anything).Return(10, io.EOF).Maybe()
47 46
 	suite.clientConnMock.On("Close").Return(nil)
48 47
 
49
-	relay.Relay(suite.ctx, suite.loggerMock, 1024,
50
-		suite.telegramConnMock, suite.clientConnMock)
48
+	relay.Relay(suite.ctx, suite.loggerMock, suite.telegramConnMock, suite.clientConnMock)
51 49
 }
52 50
 
53 51
 func TestRelay(t *testing.T) {

+ 0
- 22
mtglib/internal/relay/timeouts.go Zobrazit soubor

@@ -1,22 +0,0 @@
1
-package relay
2
-
3
-import (
4
-	"math/rand"
5
-	"time"
6
-)
7
-
8
-func getConnectionTimeToLive() time.Duration {
9
-	return getTime(ConnectionTimeToLiveMin, ConnectionTimeToLiveMax)
10
-}
11
-
12
-func getTimeout() time.Duration {
13
-	return getTime(TimeoutMin, TimeoutMax)
14
-}
15
-
16
-func getTime(minDuration, maxDuration time.Duration) time.Duration {
17
-	minDurationInSeconds := int(minDuration.Seconds())
18
-	maxDurationInSeconds := int(maxDuration.Seconds())
19
-	number := minDurationInSeconds + rand.Intn(maxDurationInSeconds-minDurationInSeconds)
20
-
21
-	return time.Duration(number) * time.Second
22
-}

+ 0
- 37
mtglib/internal/relay/timeouts_internal_test.go Zobrazit soubor

@@ -1,37 +0,0 @@
1
-package relay
2
-
3
-import (
4
-	"fmt"
5
-	"testing"
6
-
7
-	"github.com/stretchr/testify/suite"
8
-)
9
-
10
-type TimeoutsTestSuite struct {
11
-	suite.Suite
12
-}
13
-
14
-func (suite *TimeoutsTestSuite) TestGetConnectionTimeToLive() {
15
-	for i := 0; i < 100; i++ {
16
-		value := getConnectionTimeToLive()
17
-		message := fmt.Sprintf("generated value is %v", value)
18
-
19
-		suite.GreaterOrEqual(value, ConnectionTimeToLiveMin, message)
20
-		suite.LessOrEqual(value, ConnectionTimeToLiveMax, message)
21
-	}
22
-}
23
-
24
-func (suite *TimeoutsTestSuite) TestGetTimeout() {
25
-	for i := 0; i < 100; i++ {
26
-		value := getTimeout()
27
-		message := fmt.Sprintf("generated value is %v", value)
28
-
29
-		suite.GreaterOrEqual(value, TimeoutMin, message)
30
-		suite.LessOrEqual(value, TimeoutMax, message)
31
-	}
32
-}
33
-
34
-func TestTimeouts(t *testing.T) {
35
-	t.Parallel()
36
-	suite.Run(t, &TimeoutsTestSuite{})
37
-}

+ 0
- 4
mtglib/proxy.go Zobrazit soubor

@@ -25,7 +25,6 @@ type Proxy struct {
25 25
 
26 26
 	allowFallbackOnUnknownDC bool
27 27
 	tolerateTimeSkewness     time.Duration
28
-	bufferSize               int
29 28
 	domainFrontingPort       int
30 29
 	workerPool               *ants.PoolWithFunc
31 30
 	telegram                 *telegram.Telegram
@@ -84,7 +83,6 @@ func (p *Proxy) ServeConn(conn net.Conn) {
84 83
 	relay.Relay(
85 84
 		ctx,
86 85
 		ctx.logger.Named("relay"),
87
-		p.bufferSize,
88 86
 		ctx.telegramConn,
89 87
 		ctx.clientConn,
90 88
 	)
@@ -267,7 +265,6 @@ func (p *Proxy) doDomainFronting(ctx *streamContext, conn *connRewind) {
267 265
 	relay.Relay(
268 266
 		ctx,
269 267
 		ctx.logger.Named("domain-fronting"),
270
-		p.bufferSize,
271 268
 		frontConn,
272 269
 		conn,
273 270
 	)
@@ -296,7 +293,6 @@ func NewProxy(opts ProxyOpts) (*Proxy, error) {
296 293
 		logger:                   opts.getLogger("proxy"),
297 294
 		domainFrontingPort:       opts.getDomainFrontingPort(),
298 295
 		tolerateTimeSkewness:     opts.getTolerateTimeSkewness(),
299
-		bufferSize:               opts.getBufferSize(),
300 296
 		allowFallbackOnUnknownDC: opts.AllowFallbackOnUnknownDC,
301 297
 		telegram:                 tg,
302 298
 	}

+ 0
- 8
mtglib/proxy_opts.go Zobrazit soubor

@@ -131,14 +131,6 @@ func (p ProxyOpts) valid() error {
131 131
 	return nil
132 132
 }
133 133
 
134
-func (p ProxyOpts) getBufferSize() int {
135
-	if p.BufferSize < 1 {
136
-		return DefaultBufferSize
137
-	}
138
-
139
-	return int(p.BufferSize)
140
-}
141
-
142 134
 func (p ProxyOpts) getConcurrency() int {
143 135
 	if p.Concurrency == 0 {
144 136
 		return DefaultConcurrency

+ 0
- 5
network/default_test.go Zobrazit soubor

@@ -30,11 +30,6 @@ func (suite *DefaultDialerTestSuite) TestNegativeTimeout() {
30 30
 	suite.Error(err)
31 31
 }
32 32
 
33
-func (suite *DefaultDialerTestSuite) TestNegativeBufferSize() {
34
-	_, err := network.NewDefaultDialer(0, -1)
35
-	suite.Error(err)
36
-}
37
-
38 33
 func (suite *DefaultDialerTestSuite) TestUnsupportedProtocol() {
39 34
 	_, err := suite.d.DialContext(context.Background(),
40 35
 		"udp",

Načítá se…
Zrušit
Uložit