Propagate random padding to proxy requests

This commit is contained in:
9seconds
2018-07-12 22:04:31 +03:00
parent 607f4f42c4
commit e8a3d570d1
2 changed files with 11 additions and 2 deletions
+4
View File
@@ -15,6 +15,7 @@ const (
proxyRequestFlagsIntermediate = 0x20000000 proxyRequestFlagsIntermediate = 0x20000000
proxyRequestFlagsAbdridged = 0x40000000 proxyRequestFlagsAbdridged = 0x40000000
proxyRequestFlagsQuickAck = 0x80000000 proxyRequestFlagsQuickAck = 0x80000000
proxyRequestFlagsPad = 0x8000000
) )
var proxyRequestFlagsEncryptedPrefix [8]byte var proxyRequestFlagsEncryptedPrefix [8]byte
@@ -50,6 +51,9 @@ func (r proxyRequestFlags) String() string {
if r&proxyRequestFlagsQuickAck != 0 { if r&proxyRequestFlagsQuickAck != 0 {
flags = append(flags, "QUICK_ACK") flags = append(flags, "QUICK_ACK")
} }
if r&proxyRequestFlagsPad != 0 {
flags = append(flags, "PAD")
}
return strings.Join(flags, " | ") return strings.Join(flags, " | ")
} }
+7 -2
View File
@@ -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) { func NewProxyRequest(clientAddr, ownAddr *net.TCPAddr, opts *mtproto.ConnectionOpts, adTag []byte) (*ProxyRequest, error) {
flags := proxyRequestFlagsHasAdTag | proxyRequestFlagsMagic | proxyRequestFlagsExtMode2 flags := proxyRequestFlagsHasAdTag | proxyRequestFlagsMagic | proxyRequestFlagsExtMode2
if opts.ConnectionType == mtproto.ConnectionTypeAbridged { switch opts.ConnectionType {
case mtproto.ConnectionTypeAbridged:
flags |= proxyRequestFlagsAbdridged flags |= proxyRequestFlagsAbdridged
} else { case mtproto.ConnectionTypeIntermediate:
flags |= proxyRequestFlagsIntermediate flags |= proxyRequestFlagsIntermediate
case mtproto.ConnectionTypeSecure:
flags |= proxyRequestFlagsIntermediate | proxyRequestFlagsPad
default:
panic("Unknown connection type")
} }
request := &ProxyRequest{ request := &ProxyRequest{