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
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

12345678910111213141516171819202122232425262728293031
  1. package network
  2. import (
  3. "fmt"
  4. "net"
  5. )
  6. func setCommonSocketOptions(conn *net.TCPConn, keepAliveConfig net.KeepAliveConfig) error {
  7. if err := applyKeepAlive(conn, keepAliveConfig); err != nil {
  8. return fmt.Errorf("cannot configure TCP keepalive: %w", err)
  9. }
  10. if err := conn.SetLinger(tcpLingerTimeout); err != nil {
  11. return fmt.Errorf("cannot set TCP linger timeout: %w", err)
  12. }
  13. rawConn, err := conn.SyscallConn()
  14. if err != nil {
  15. return fmt.Errorf("cannot get underlying raw connection: %w", err)
  16. }
  17. if err := setSocketReuseAddrPort(rawConn); err != nil {
  18. return fmt.Errorf("cannot setup SO_REUSEADDR/PORT: %w", err)
  19. }
  20. setCongestionControl(rawConn)
  21. setTCPUserTimeout(rawConn, keepAliveConfig)
  22. setNotSentLowat(rawConn)
  23. return nil
  24. }