From 66f4d967e7346f492d1e845f3831ef3addd2252d Mon Sep 17 00:00:00 2001 From: 9seconds Date: Sun, 28 Nov 2021 18:08:40 +0300 Subject: [PATCH] Get rid of buffersize everywhere --- mtglib/init.go | 2 + mtglib/internal/relay/conn.go | 19 ---------- mtglib/internal/relay/init.go | 7 +--- mtglib/internal/relay/pools.go | 15 +++----- mtglib/internal/relay/relay.go | 12 ++---- mtglib/internal/relay/relay_test.go | 4 +- mtglib/internal/relay/timeouts.go | 22 ----------- .../internal/relay/timeouts_internal_test.go | 37 ------------------- mtglib/proxy.go | 4 -- mtglib/proxy_opts.go | 8 ---- network/default_test.go | 5 --- 11 files changed, 12 insertions(+), 123 deletions(-) delete mode 100644 mtglib/internal/relay/conn.go delete mode 100644 mtglib/internal/relay/timeouts.go delete mode 100644 mtglib/internal/relay/timeouts_internal_test.go diff --git a/mtglib/init.go b/mtglib/init.go index 08a4e2f..13a1be4 100644 --- a/mtglib/init.go +++ b/mtglib/init.go @@ -61,6 +61,8 @@ const ( DefaultConcurrency = 4096 // DefaultBufferSize is a default size of a copy buffer. + // + // Deprecated: this setting no longer makes any effect. DefaultBufferSize = 16 * 1024 // 16 kib // DefaultDomainFrontingPort is a default port (HTTPS) to connect to in diff --git a/mtglib/internal/relay/conn.go b/mtglib/internal/relay/conn.go deleted file mode 100644 index cdeaff1..0000000 --- a/mtglib/internal/relay/conn.go +++ /dev/null @@ -1,19 +0,0 @@ -package relay - -import ( - "fmt" - "net" - "time" -) - -type conn struct { - net.Conn -} - -func (c conn) Read(p []byte) (int, error) { - if err := c.SetReadDeadline(time.Now().Add(getTimeout())); err != nil { - return 0, fmt.Errorf("cannot set read deadline: %w", err) - } - - return c.Conn.Read(p) // nolint: wrapcheck -} diff --git a/mtglib/internal/relay/init.go b/mtglib/internal/relay/init.go index df1f720..855d952 100644 --- a/mtglib/internal/relay/init.go +++ b/mtglib/internal/relay/init.go @@ -1,12 +1,7 @@ package relay -import "time" - const ( - ConnectionTimeToLiveMin = 2 * time.Minute - ConnectionTimeToLiveMax = 10 * time.Minute - TimeoutMin = 20 * time.Second - TimeoutMax = time.Minute + bufferSize = 32 * 1024 ) type Logger interface { diff --git a/mtglib/internal/relay/pools.go b/mtglib/internal/relay/pools.go index 0f0a34a..b7889d7 100644 --- a/mtglib/internal/relay/pools.go +++ b/mtglib/internal/relay/pools.go @@ -9,21 +9,16 @@ type eastWest struct { var eastWestPool = sync.Pool{ New: func() interface{} { - return &eastWest{} + return &eastWest{ + east: make([]byte, bufferSize), + west: make([]byte, bufferSize), + } }, } -func acquireEastWest(bufferSize int) *eastWest { +func acquireEastWest() *eastWest { wanted := eastWestPool.Get().(*eastWest) // nolint: forcetypeassert - if len(wanted.east) != bufferSize { - wanted.east = make([]byte, bufferSize) - } - - if len(wanted.west) != bufferSize { - wanted.west = make([]byte, bufferSize) - } - return wanted } diff --git a/mtglib/internal/relay/relay.go b/mtglib/internal/relay/relay.go index 223f9bc..2dab380 100644 --- a/mtglib/internal/relay/relay.go +++ b/mtglib/internal/relay/relay.go @@ -3,16 +3,14 @@ package relay import ( "context" "io" - "net" "sync" ) -func Relay(ctx context.Context, log Logger, bufferSize int, - telegramConn net.Conn, clientConn io.ReadWriteCloser) { +func Relay(ctx context.Context, log Logger, telegramConn, clientConn io.ReadWriteCloser) { defer telegramConn.Close() defer clientConn.Close() - ctx, cancel := context.WithTimeout(ctx, getConnectionTimeToLive()) + ctx, cancel := context.WithCancel(ctx) defer cancel() go func() { @@ -21,13 +19,9 @@ func Relay(ctx context.Context, log Logger, bufferSize int, clientConn.Close() }() - buffers := acquireEastWest(bufferSize) + buffers := acquireEastWest() defer releaseEastWest(buffers) - telegramConn = conn{ - Conn: telegramConn, - } - wg := &sync.WaitGroup{} wg.Add(2) // nolint: gomnd diff --git a/mtglib/internal/relay/relay_test.go b/mtglib/internal/relay/relay_test.go index d1b5362..538622a 100644 --- a/mtglib/internal/relay/relay_test.go +++ b/mtglib/internal/relay/relay_test.go @@ -37,7 +37,6 @@ func (suite *RelayTestSuite) TearDownTest() { } func (suite *RelayTestSuite) TestExit() { - suite.telegramConnMock.On("SetReadDeadline", mock.Anything).Return(nil) suite.telegramConnMock.On("Close").Return(nil) suite.telegramConnMock.On("Read", mock.Anything).Return(10, io.EOF).Once() suite.telegramConnMock.On("Write", mock.Anything).Return(10, io.EOF).Maybe() @@ -46,8 +45,7 @@ func (suite *RelayTestSuite) TestExit() { suite.clientConnMock.On("Write", mock.Anything).Return(10, io.EOF).Maybe() suite.clientConnMock.On("Close").Return(nil) - relay.Relay(suite.ctx, suite.loggerMock, 1024, - suite.telegramConnMock, suite.clientConnMock) + relay.Relay(suite.ctx, suite.loggerMock, suite.telegramConnMock, suite.clientConnMock) } func TestRelay(t *testing.T) { diff --git a/mtglib/internal/relay/timeouts.go b/mtglib/internal/relay/timeouts.go deleted file mode 100644 index 54ec753..0000000 --- a/mtglib/internal/relay/timeouts.go +++ /dev/null @@ -1,22 +0,0 @@ -package relay - -import ( - "math/rand" - "time" -) - -func getConnectionTimeToLive() time.Duration { - return getTime(ConnectionTimeToLiveMin, ConnectionTimeToLiveMax) -} - -func getTimeout() time.Duration { - return getTime(TimeoutMin, TimeoutMax) -} - -func getTime(minDuration, maxDuration time.Duration) time.Duration { - minDurationInSeconds := int(minDuration.Seconds()) - maxDurationInSeconds := int(maxDuration.Seconds()) - number := minDurationInSeconds + rand.Intn(maxDurationInSeconds-minDurationInSeconds) - - return time.Duration(number) * time.Second -} diff --git a/mtglib/internal/relay/timeouts_internal_test.go b/mtglib/internal/relay/timeouts_internal_test.go deleted file mode 100644 index 47e49e4..0000000 --- a/mtglib/internal/relay/timeouts_internal_test.go +++ /dev/null @@ -1,37 +0,0 @@ -package relay - -import ( - "fmt" - "testing" - - "github.com/stretchr/testify/suite" -) - -type TimeoutsTestSuite struct { - suite.Suite -} - -func (suite *TimeoutsTestSuite) TestGetConnectionTimeToLive() { - for i := 0; i < 100; i++ { - value := getConnectionTimeToLive() - message := fmt.Sprintf("generated value is %v", value) - - suite.GreaterOrEqual(value, ConnectionTimeToLiveMin, message) - suite.LessOrEqual(value, ConnectionTimeToLiveMax, message) - } -} - -func (suite *TimeoutsTestSuite) TestGetTimeout() { - for i := 0; i < 100; i++ { - value := getTimeout() - message := fmt.Sprintf("generated value is %v", value) - - suite.GreaterOrEqual(value, TimeoutMin, message) - suite.LessOrEqual(value, TimeoutMax, message) - } -} - -func TestTimeouts(t *testing.T) { - t.Parallel() - suite.Run(t, &TimeoutsTestSuite{}) -} diff --git a/mtglib/proxy.go b/mtglib/proxy.go index 330d2f3..ebf978c 100644 --- a/mtglib/proxy.go +++ b/mtglib/proxy.go @@ -25,7 +25,6 @@ type Proxy struct { allowFallbackOnUnknownDC bool tolerateTimeSkewness time.Duration - bufferSize int domainFrontingPort int workerPool *ants.PoolWithFunc telegram *telegram.Telegram @@ -84,7 +83,6 @@ func (p *Proxy) ServeConn(conn net.Conn) { relay.Relay( ctx, ctx.logger.Named("relay"), - p.bufferSize, ctx.telegramConn, ctx.clientConn, ) @@ -267,7 +265,6 @@ func (p *Proxy) doDomainFronting(ctx *streamContext, conn *connRewind) { relay.Relay( ctx, ctx.logger.Named("domain-fronting"), - p.bufferSize, frontConn, conn, ) @@ -296,7 +293,6 @@ func NewProxy(opts ProxyOpts) (*Proxy, error) { logger: opts.getLogger("proxy"), domainFrontingPort: opts.getDomainFrontingPort(), tolerateTimeSkewness: opts.getTolerateTimeSkewness(), - bufferSize: opts.getBufferSize(), allowFallbackOnUnknownDC: opts.AllowFallbackOnUnknownDC, telegram: tg, } diff --git a/mtglib/proxy_opts.go b/mtglib/proxy_opts.go index ddede9f..2830db5 100644 --- a/mtglib/proxy_opts.go +++ b/mtglib/proxy_opts.go @@ -131,14 +131,6 @@ func (p ProxyOpts) valid() error { return nil } -func (p ProxyOpts) getBufferSize() int { - if p.BufferSize < 1 { - return DefaultBufferSize - } - - return int(p.BufferSize) -} - func (p ProxyOpts) getConcurrency() int { if p.Concurrency == 0 { return DefaultConcurrency diff --git a/network/default_test.go b/network/default_test.go index a6b24c7..5a38026 100644 --- a/network/default_test.go +++ b/network/default_test.go @@ -30,11 +30,6 @@ func (suite *DefaultDialerTestSuite) TestNegativeTimeout() { suite.Error(err) } -func (suite *DefaultDialerTestSuite) TestNegativeBufferSize() { - _, err := network.NewDefaultDialer(0, -1) - suite.Error(err) -} - func (suite *DefaultDialerTestSuite) TestUnsupportedProtocol() { _, err := suite.d.DialContext(context.Background(), "udp",