Просмотр исходного кода

Propagate random padding to proxy requests

tags/0.10
9seconds 7 лет назад
Родитель
Сommit
e8a3d570d1
2 измененных файлов: 11 добавлений и 2 удалений
  1. 4
    0
      mtproto/rpc/proxy_flags.go
  2. 7
    2
      mtproto/rpc/proxy_request.go

+ 4
- 0
mtproto/rpc/proxy_flags.go Просмотреть файл

@@ -15,6 +15,7 @@ const (
15 15
 	proxyRequestFlagsIntermediate                   = 0x20000000
16 16
 	proxyRequestFlagsAbdridged                      = 0x40000000
17 17
 	proxyRequestFlagsQuickAck                       = 0x80000000
18
+	proxyRequestFlagsPad                            = 0x8000000
18 19
 )
19 20
 
20 21
 var proxyRequestFlagsEncryptedPrefix [8]byte
@@ -50,6 +51,9 @@ func (r proxyRequestFlags) String() string {
50 51
 	if r&proxyRequestFlagsQuickAck != 0 {
51 52
 		flags = append(flags, "QUICK_ACK")
52 53
 	}
54
+	if r&proxyRequestFlagsPad != 0 {
55
+		flags = append(flags, "PAD")
56
+	}
53 57
 
54 58
 	return strings.Join(flags, " | ")
55 59
 }

+ 7
- 2
mtproto/rpc/proxy_request.go Просмотреть файл

@@ -67,10 +67,15 @@ func (r *ProxyRequest) MakeHeader(message []byte) (*bytes.Buffer, fmt.Stringer)
67 67
 func NewProxyRequest(clientAddr, ownAddr *net.TCPAddr, opts *mtproto.ConnectionOpts, adTag []byte) (*ProxyRequest, error) {
68 68
 	flags := proxyRequestFlagsHasAdTag | proxyRequestFlagsMagic | proxyRequestFlagsExtMode2
69 69
 
70
-	if opts.ConnectionType == mtproto.ConnectionTypeAbridged {
70
+	switch opts.ConnectionType {
71
+	case mtproto.ConnectionTypeAbridged:
71 72
 		flags |= proxyRequestFlagsAbdridged
72
-	} else {
73
+	case mtproto.ConnectionTypeIntermediate:
73 74
 		flags |= proxyRequestFlagsIntermediate
75
+	case mtproto.ConnectionTypeSecure:
76
+		flags |= proxyRequestFlagsIntermediate | proxyRequestFlagsPad
77
+	default:
78
+		panic("Unknown connection type")
74 79
 	}
75 80
 
76 81
 	request := &ProxyRequest{

Загрузка…
Отмена
Сохранить