From e8a3d570d1c6bec5a0b144f51abcc59bb2c67af3 Mon Sep 17 00:00:00 2001 From: 9seconds Date: Thu, 12 Jul 2018 22:04:31 +0300 Subject: [PATCH] Propagate random padding to proxy requests --- mtproto/rpc/proxy_flags.go | 4 ++++ mtproto/rpc/proxy_request.go | 9 +++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/mtproto/rpc/proxy_flags.go b/mtproto/rpc/proxy_flags.go index 5599537..0167162 100644 --- a/mtproto/rpc/proxy_flags.go +++ b/mtproto/rpc/proxy_flags.go @@ -15,6 +15,7 @@ const ( proxyRequestFlagsIntermediate = 0x20000000 proxyRequestFlagsAbdridged = 0x40000000 proxyRequestFlagsQuickAck = 0x80000000 + proxyRequestFlagsPad = 0x8000000 ) var proxyRequestFlagsEncryptedPrefix [8]byte @@ -50,6 +51,9 @@ func (r proxyRequestFlags) String() string { if r&proxyRequestFlagsQuickAck != 0 { flags = append(flags, "QUICK_ACK") } + if r&proxyRequestFlagsPad != 0 { + flags = append(flags, "PAD") + } return strings.Join(flags, " | ") } diff --git a/mtproto/rpc/proxy_request.go b/mtproto/rpc/proxy_request.go index 2fda394..b377fbe 100644 --- a/mtproto/rpc/proxy_request.go +++ b/mtproto/rpc/proxy_request.go @@ -67,10 +67,15 @@ func (r *ProxyRequest) MakeHeader(message []byte) (*bytes.Buffer, fmt.Stringer) func NewProxyRequest(clientAddr, ownAddr *net.TCPAddr, opts *mtproto.ConnectionOpts, adTag []byte) (*ProxyRequest, error) { flags := proxyRequestFlagsHasAdTag | proxyRequestFlagsMagic | proxyRequestFlagsExtMode2 - if opts.ConnectionType == mtproto.ConnectionTypeAbridged { + switch opts.ConnectionType { + case mtproto.ConnectionTypeAbridged: flags |= proxyRequestFlagsAbdridged - } else { + case mtproto.ConnectionTypeIntermediate: flags |= proxyRequestFlagsIntermediate + case mtproto.ConnectionTypeSecure: + flags |= proxyRequestFlagsIntermediate | proxyRequestFlagsPad + default: + panic("Unknown connection type") } request := &ProxyRequest{