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

Bugfix proxy request handler

tags/0.9
9seconds 7 лет назад
Родитель
Сommit
4210cf014e
3 измененных файлов: 7 добавлений и 8 удалений
  1. 4
    4
      mtproto/rpc/proxy_request.go
  2. 3
    2
      mtproto/wrappers/frame.go
  3. 0
    2
      telegram/middle.go

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

34
 
34
 
35
 	buf.Write(TagProxyRequest)
35
 	buf.Write(TagProxyRequest)
36
 	buf.Write(flags.Bytes())
36
 	buf.Write(flags.Bytes())
37
-	buf.Write(r.ConnectionID[:])
38
-	buf.Write(r.ClientIPPort[:])
39
-	buf.Write(r.OurIPPort[:])
37
+	buf.Write(r.ConnectionID)
38
+	buf.Write(r.ClientIPPort)
39
+	buf.Write(r.OurIPPort)
40
 	buf.Write(ProxyRequestExtraSize)
40
 	buf.Write(ProxyRequestExtraSize)
41
 	buf.Write(ProxyRequestProxyTag)
41
 	buf.Write(ProxyRequestProxyTag)
42
 	buf.WriteByte(byte(len(r.ADTag)))
42
 	buf.WriteByte(byte(len(r.ADTag)))
43
 	buf.Write(r.ADTag)
43
 	buf.Write(r.ADTag)
44
-	buf.Write(bytes.Repeat([]byte{0x00}, buf.Len()%4))
44
+	buf.Write(make([]byte, (4-buf.Len()%4)%4))
45
 	buf.Write(message)
45
 	buf.Write(message)
46
 
46
 
47
 	return buf.Bytes()
47
 	return buf.Bytes()

+ 3
- 2
mtproto/wrappers/frame.go Просмотреть файл

4
 	"bytes"
4
 	"bytes"
5
 	"crypto/aes"
5
 	"crypto/aes"
6
 	"encoding/binary"
6
 	"encoding/binary"
7
+	"fmt"
7
 	"hash/crc32"
8
 	"hash/crc32"
8
 	"io"
9
 	"io"
9
 	"io/ioutil"
10
 	"io/ioutil"
20
 	frameRWCMaxMessageLength = 16777216
21
 	frameRWCMaxMessageLength = 16777216
21
 )
22
 )
22
 
23
 
23
-var frameRWCPadding = [4]byte{0x04, 0x00, 0x00, 0x00}
24
+var frameRWCPadding = []byte{0x04, 0x00, 0x00, 0x00}
24
 
25
 
25
 type FrameRWC struct {
26
 type FrameRWC struct {
26
 	wrappers.BufferedReader
27
 	wrappers.BufferedReader
48
 
49
 
49
 	checksum := crc32.ChecksumIEEE(writeBuf.Bytes())
50
 	checksum := crc32.ChecksumIEEE(writeBuf.Bytes())
50
 	binary.Write(writeBuf, binary.LittleEndian, checksum)
51
 	binary.Write(writeBuf, binary.LittleEndian, checksum)
51
-	writeBuf.Write(bytes.Repeat(frameRWCPadding[:], paddingLength/4))
52
+	writeBuf.Write(bytes.Repeat(frameRWCPadding, paddingLength/4))
52
 
53
 
53
 	_, err := f.conn.Write(writeBuf.Bytes())
54
 	_, err := f.conn.Write(writeBuf.Bytes())
54
 	return len(buf), err
55
 	return len(buf), err

+ 0
- 2
telegram/middle.go Просмотреть файл

1
 package telegram
1
 package telegram
2
 
2
 
3
 import (
3
 import (
4
-	"fmt"
5
 	"io"
4
 	"io"
6
 	"net"
5
 	"net"
7
 	"net/http"
6
 	"net/http"
131
 	if err = rpcHandshakeResp.Valid(req); err != nil {
130
 	if err = rpcHandshakeResp.Valid(req); err != nil {
132
 		return nil, errors.Annotate(err, "Invalid RPC handshake response")
131
 		return nil, errors.Annotate(err, "Invalid RPC handshake response")
133
 	}
132
 	}
134
-	fmt.Println("VICTORY")
135
 
133
 
136
 	return rpcHandshakeResp, nil
134
 	return rpcHandshakeResp, nil
137
 }
135
 }

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