Propagate connection protocol

This commit is contained in:
9seconds
2018-07-01 10:27:36 +03:00
parent 67c1194d5b
commit f9a2b0513d
7 changed files with 25 additions and 11 deletions
+1 -1
View File
@@ -41,7 +41,7 @@ func (t *directTelegram) Dial(connOpts *mtproto.ConnectionOpts) (io.ReadWriteClo
dc = 1
}
return t.baseTelegram.dial(dc - 1)
return t.baseTelegram.dial(dc-1, connOpts.ConnectionProto)
}
func (t *directTelegram) Init(connOpts *mtproto.ConnectionOpts, conn io.ReadWriteCloser) (io.ReadWriteCloser, error) {
+1 -1
View File
@@ -14,7 +14,7 @@ type middleTelegram struct {
middleTelegramCaller
}
func NewMiddleTelegram(conf *config.Config, logger *zap.SugaredLogger) Telegram {
func NewMiddleTelegram(conf *config.Config, logger *zap.SugaredLogger) *middleTelegram {
tg := &middleTelegram{
middleTelegramCaller: middleTelegramCaller{
baseTelegram: baseTelegram{
+1 -1
View File
@@ -47,7 +47,7 @@ func (t *middleTelegramCaller) Dial(connOpts *mtproto.ConnectionOpts) (io.ReadWr
t.dialerMutex.RLock()
defer t.dialerMutex.RUnlock()
return t.baseTelegram.dial(dc)
return t.baseTelegram.dial(dc, connOpts.ConnectionProto)
}
func (t *middleTelegramCaller) autoUpdate() {
+10 -5
View File
@@ -24,13 +24,18 @@ type baseTelegram struct {
v6Addresses map[int16][]string
}
func (b *baseTelegram) dial(dcIdx int16) (io.ReadWriteCloser, error) {
func (b *baseTelegram) dial(dcIdx int16, proto mtproto.ConnectionProtocol) (io.ReadWriteCloser, error) {
addrs := make([]string, 2)
if addr, ok := b.v6Addresses[dcIdx]; ok && len(addr) > 0 {
addrs = append(addrs, addr[rand.Intn(len(addr))])
if proto&mtproto.ConnectionProtocolIPv6 != 0 {
if addr, ok := b.v6Addresses[dcIdx]; ok && len(addr) > 0 {
addrs = append(addrs, addr[rand.Intn(len(addr))])
}
}
if addr, ok := b.v4Addresses[dcIdx]; ok && len(addr) > 0 {
addrs = append(addrs, addr[rand.Intn(len(addr))])
if proto&mtproto.ConnectionProtocolIPv4 != 0 {
if addr, ok := b.v4Addresses[dcIdx]; ok && len(addr) > 0 {
addrs = append(addrs, addr[rand.Intn(len(addr))])
}
}
for _, addr := range addrs {