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

Get rid of buffersize everywhere

tags/v2.1.3^2
9seconds пре 4 година
родитељ
комит
66f4d967e7

+ 2
- 0
mtglib/init.go Прегледај датотеку

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

+ 0
- 19
mtglib/internal/relay/conn.go Прегледај датотеку

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 Прегледај датотеку

1
 package relay
1
 package relay
2
 
2
 
3
-import "time"
4
-
5
 const (
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
 type Logger interface {
7
 type Logger interface {

+ 5
- 10
mtglib/internal/relay/pools.go Прегледај датотеку

9
 
9
 
10
 var eastWestPool = sync.Pool{
10
 var eastWestPool = sync.Pool{
11
 	New: func() interface{} {
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
 	wanted := eastWestPool.Get().(*eastWest) // nolint: forcetypeassert
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
 	return wanted
22
 	return wanted
28
 }
23
 }
29
 
24
 

+ 3
- 9
mtglib/internal/relay/relay.go Прегледај датотеку

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

+ 1
- 3
mtglib/internal/relay/relay_test.go Прегледај датотеку

37
 }
37
 }
38
 
38
 
39
 func (suite *RelayTestSuite) TestExit() {
39
 func (suite *RelayTestSuite) TestExit() {
40
-	suite.telegramConnMock.On("SetReadDeadline", mock.Anything).Return(nil)
41
 	suite.telegramConnMock.On("Close").Return(nil)
40
 	suite.telegramConnMock.On("Close").Return(nil)
42
 	suite.telegramConnMock.On("Read", mock.Anything).Return(10, io.EOF).Once()
41
 	suite.telegramConnMock.On("Read", mock.Anything).Return(10, io.EOF).Once()
43
 	suite.telegramConnMock.On("Write", mock.Anything).Return(10, io.EOF).Maybe()
42
 	suite.telegramConnMock.On("Write", mock.Anything).Return(10, io.EOF).Maybe()
46
 	suite.clientConnMock.On("Write", mock.Anything).Return(10, io.EOF).Maybe()
45
 	suite.clientConnMock.On("Write", mock.Anything).Return(10, io.EOF).Maybe()
47
 	suite.clientConnMock.On("Close").Return(nil)
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
 func TestRelay(t *testing.T) {
51
 func TestRelay(t *testing.T) {

+ 0
- 22
mtglib/internal/relay/timeouts.go Прегледај датотеку

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 Прегледај датотеку

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 Прегледај датотеку

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

+ 0
- 8
mtglib/proxy_opts.go Прегледај датотеку

131
 	return nil
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
 func (p ProxyOpts) getConcurrency() int {
134
 func (p ProxyOpts) getConcurrency() int {
143
 	if p.Concurrency == 0 {
135
 	if p.Concurrency == 0 {
144
 		return DefaultConcurrency
136
 		return DefaultConcurrency

+ 0
- 5
network/default_test.go Прегледај датотеку

30
 	suite.Error(err)
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
 func (suite *DefaultDialerTestSuite) TestUnsupportedProtocol() {
33
 func (suite *DefaultDialerTestSuite) TestUnsupportedProtocol() {
39
 	_, err := suite.d.DialContext(context.Background(),
34
 	_, err := suite.d.DialContext(context.Background(),
40
 		"udp",
35
 		"udp",

Loading…
Откажи
Сачувај