Highly-opinionated (ex-bullshit-free) MTPROTO proxy for Telegram. If you use v1.0 or upgrade broke you proxy, please read the chapter Version 2
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

address_pool.go 547B

123456789101112131415161718192021222324252627282930313233
  1. package telegram
  2. import "math/rand"
  3. type addressPool struct {
  4. v4 [][]tgAddr
  5. v6 [][]tgAddr
  6. }
  7. func (a addressPool) getV4(dc int) []tgAddr {
  8. return a.get(a.v4, dc-1)
  9. }
  10. func (a addressPool) getV6(dc int) []tgAddr {
  11. return a.get(a.v6, dc-1)
  12. }
  13. func (a addressPool) get(addresses [][]tgAddr, dc int) []tgAddr {
  14. if dc < 0 || dc >= len(addresses) {
  15. return nil
  16. }
  17. rv := make([]tgAddr, len(addresses[dc]))
  18. copy(rv, addresses[dc])
  19. if len(rv) > 1 {
  20. rand.Shuffle(len(rv), func(i, j int) {
  21. rv[i], rv[j] = rv[j], rv[i]
  22. })
  23. }
  24. return rv
  25. }