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{