Use dc indexes accordingly

This commit is contained in:
9seconds
2021-03-24 10:30:09 +03:00
parent 4da2a4f10f
commit 02aa969d6c
6 changed files with 21 additions and 18 deletions
+5 -5
View File
@@ -14,16 +14,16 @@ type Telegram struct {
}
func (t Telegram) Dial(ctx context.Context, dc int) (net.Conn, error) {
if dc < 0 || dc > 4 {
if dc <= 0 || dc > 5 {
return nil, fmt.Errorf("do not know how to dial to %d", dc)
}
var addresses []tgAddr
if t.preferIP == preferIPOnlyIPv6 {
addresses = []tgAddr{v6Addresses[dc]}
addresses = []tgAddr{v6Addresses[dc-1]}
} else {
addresses = append(addresses, v4Addresses[dc]...)
addresses = append(addresses, v4Addresses[dc-1]...)
rand.Shuffle(len(addresses), func(i, j int) {
addresses[i], addresses[j] = addresses[j], addresses[i]
})
@@ -31,9 +31,9 @@ func (t Telegram) Dial(ctx context.Context, dc int) (net.Conn, error) {
switch t.preferIP {
case preferIPPreferIPv4:
addresses = append(addresses, v6Addresses[dc])
addresses = append(addresses, v6Addresses[dc-1])
case preferIPPreferIPv6:
addresses = append([]tgAddr{v6Addresses[dc]}, addresses...)
addresses = append([]tgAddr{v6Addresses[dc-1]}, addresses...)
case preferIPOnlyIPv4, preferIPOnlyIPv6:
}
@@ -33,7 +33,8 @@ func (suite *TelegramTestSuite) TearDownTest() {
func (suite *TelegramTestSuite) TestUnknownDC() {
testData := []int{
-1,
5,
0,
6,
100,
}
@@ -50,10 +51,10 @@ func (suite *TelegramTestSuite) TestUnknownDC() {
func (suite *TelegramTestSuite) TestDialToCorrectIPs() {
testData := map[int][]tgAddr{}
for i := 0; i < 5; i++ {
for i := 1; i <= 5; i++ {
testData[i] = []tgAddr{}
testData[i] = append(testData[i], v4Addresses[i]...)
testData[i] = append(testData[i], v6Addresses[i])
testData[i] = append(testData[i], v4Addresses[i-1]...)
testData[i] = append(testData[i], v6Addresses[i-1])
}
for i, v := range testData {
@@ -95,7 +96,7 @@ func (suite *TelegramTestSuite) TestDialPreferIPRange() {
}
tg, _ := New(suite.dialerMock, name)
_, err := tg.Dial(context.Background(), 0)
_, err := tg.Dial(context.Background(), 1)
assert.True(t, errors.Is(err, io.EOF))
})
@@ -122,7 +123,7 @@ func (suite *TelegramTestSuite) TestDialPreferIPPriority() {
tg, _ := New(suite.dialerMock, name)
res, err := tg.Dial(context.Background(), 0)
res, err := tg.Dial(context.Background(), 1)
assert.NoError(t, err)
assert.Equal(t, conn, res)
})