Bläddra i källkod

Small changes for abridged/intermediate

tags/0.9
9seconds 7 år sedan
förälder
incheckning
154ff70bf7
3 ändrade filer med 14 tillägg och 12 borttagningar
  1. 7
    7
      mtproto/wrappers/abridged.go
  2. 0
    1
      mtproto/wrappers/frame.go
  3. 7
    4
      mtproto/wrappers/intermediate.go

+ 7
- 7
mtproto/wrappers/abridged.go Visa fil

@@ -2,7 +2,6 @@ package wrappers
2 2
 
3 3
 import (
4 4
 	"bytes"
5
-	"encoding/binary"
6 5
 	"io"
7 6
 	"net"
8 7
 
@@ -29,10 +28,14 @@ type AbridgedReadWriteCloserWithAddr struct {
29 28
 
30 29
 func (a *AbridgedReadWriteCloserWithAddr) Read(p []byte) (int, error) {
31 30
 	return a.BufferedRead(p, func() error {
32
-		var msgLength uint8
33
-		if err := binary.Read(a.conn, binary.LittleEndian, &msgLength); err != nil {
31
+		buf := &bytes.Buffer{}
32
+		buf.Grow(3)
33
+
34
+		if _, err := io.CopyN(buf, a.conn, 1); err != nil {
34 35
 			return errors.Annotate(err, "Cannot read message length")
35 36
 		}
37
+		msgLength := uint8(buf.Bytes()[0])
38
+		buf.Reset()
36 39
 
37 40
 		a.opts.QuickAck = false
38 41
 		if msgLength >= abridgedQuickAckLength {
@@ -42,11 +45,8 @@ func (a *AbridgedReadWriteCloserWithAddr) Read(p []byte) (int, error) {
42 45
 
43 46
 		msgLength32 := uint32(msgLength)
44 47
 		if msgLength == abridgedSmallPacketLength {
45
-			buf := &bytes.Buffer{}
46
-			buf.Grow(3)
47
-
48 48
 			if _, err := io.CopyN(buf, a.conn, 3); err != nil {
49
-				return errors.Annotate(err, "Cannot read correct message length")
49
+				return errors.Annotate(err, "Cannot read the correct message length")
50 50
 			}
51 51
 			number := uint24{}
52 52
 			copy(number[:], buf.Bytes())

+ 0
- 1
mtproto/wrappers/frame.go Visa fil

@@ -4,7 +4,6 @@ import (
4 4
 	"bytes"
5 5
 	"crypto/aes"
6 6
 	"encoding/binary"
7
-	"fmt"
8 7
 	"hash/crc32"
9 8
 	"io"
10 9
 	"io/ioutil"

+ 7
- 4
mtproto/wrappers/intermediate.go Visa fil

@@ -23,18 +23,21 @@ type IntermediateReadWriteCloserWithAddr struct {
23 23
 
24 24
 func (i *IntermediateReadWriteCloserWithAddr) Read(p []byte) (int, error) {
25 25
 	return i.BufferedRead(p, func() error {
26
-		var length uint32
27
-		if err := binary.Read(i.conn, binary.LittleEndian, &length); err != nil {
26
+		buf := &bytes.Buffer{}
27
+		buf.Grow(4)
28
+
29
+		if _, err := io.CopyN(buf, i.conn, 4); err != nil {
28 30
 			return errors.Annotate(err, "Cannot read message length")
29 31
 		}
32
+		length := binary.LittleEndian.Uint32(buf.Bytes())
33
+		buf.Reset()
34
+		buf.Grow(int(length))
30 35
 
31 36
 		if length > intermediateQuickAckLength {
32 37
 			i.opts.QuickAck = true
33 38
 			length -= intermediateQuickAckLength
34 39
 		}
35 40
 
36
-		buf := &bytes.Buffer{}
37
-		buf.Grow(int(length))
38 41
 		if _, err := io.CopyN(buf, i.conn, int64(length)); err != nil {
39 42
 			return errors.Annotate(err, "Cannot read the message")
40 43
 		}

Laddar…
Avbryt
Spara